文档章节

mongoose文档

cyper
 cyper
发布于 2015/12/01 00:53
字数 365
阅读 90
收藏 0

详见:http://mongoosejs.com/docs/guide.html

Schema 》Model 》Instance

安装
node install mongoose --save

简单的例子:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
//mongoose.connect('mongodb://localhost/test');
mongoose.connect('localhost', 'test');

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.on('open', function (callback) {
    console.log('yay!');

    // schema
    var kittySchema = new Schema({
        name: String
    });
    kittySchema.methods.speak = function () {
        var greeting = this.name ? 'My name is ' + this.name : "I don't have a name";
        console.log(greeting);
    };

    // model
    // 记住第一个参数+s就是表/collection的名字。
    var Kitten = mongoose.model('Kitten', kittySchema);

    // instance/property
    var xx = new Kitten({name: 'xxx'});
    console.log(xx.name);

    // call method
    var yy = new Kitten({name: 'yy'});
    yy.speak();

    // save
    yy.save(function (err, yy) {
        if (err) {
            console.log(err);
            return;
        }

        console.log(yy);
    });

    // find all
    Kitten.find(function (err, kittens) {
        if (err) {
            console.log(err);
            return;
        }

        console.log(kittens);
    });

    // find by (name starts with 'y')
    Kitten.find({name: /^y/}, function (err, kittens) {
        if (err) {
            console.log(err);
            return;
        }

        console.log(kittens);
    });

});

自己写得稍微复杂一点的例子:

var mongoose = require('mongoose');
var PlatformTask = require('./PlatformTask');
var Receiver = require('./Receiver');
var Message = require('./Message');
var BlueConfig = require('./BlueConfig');
var _ = require('lodash');


mongoose.connect('mongodb://localhost/bluelotus');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.on('open', function () {
    console.log('yay!');


    PlatformTask.findOne({"taskStatus": "开放招募中"}, function (err, task) {
        var requiredSkills = task.get('taskSkills');


        // status = active, order by vip level desc.
        var messages = [];
        Receiver.find({active: true})
            .sort('-vip.freelevel')
            .exec(function (err, users) {
                if (err) return console.log(err);

                console.log('required skills:', requiredSkills);

                _.each(users, function (user) {
                    var skills = user.get('skill');
                    var skillNames = _.pluck(skills, 'name');
                    console.log("user skills:", skillNames);

                    var common = _.intersection(requiredSkills, skillNames);
                    console.log(common);

                    // match skills
                    if (common.length > 0) {
                        messages.push({
                            user_phone: user.telephone.length > 0 ? users.telephone[0]: '',
                            content: _.template("亲爱的<%=user%>, 去看看新任务吧:任务名称:<%=task%> ")({
                                user: user.get('nickname'),
                                task: task.get('taskName')
                            })
                        });
                    }

                    // max users number
                    if(messages.length === BlueConfig.max_users){
                        return false;
                    }
                });

                console.log('messages: ', messages);


                // insert messages
                Message.create(messages, function(err){
                    if(err) return console.log('save message error');

                    console.log("messages saved");
                });


            });
    });


});




我只能说mongodb太好用了。。。数据库和表不用事先存在。 只管用就行。



© 著作权归作者所有

共有 人打赏支持
上一篇: side menu待研究
cyper

cyper

粉丝 58
博文 685
码字总数 143207
作品 0
武汉
前端工程师
私信 提问
Mongoose - 让NodeJS更容易操作Mongodb数据

Mongoose是什么 Mongoose是什么 Mongoose是MongoDB的一个对象模型工具,可以工作于异步环境下。 定义一个模型很容易: var Comments = new Schema({ title : String , body : String , date ...

maweitao
2014/04/11
345
0
Nodejs和Mongodb的连接器Mongoose

简介 今天我们将学习Mongoose,什么是Mongoose呢,它于MongoDB又是什么关系呢,它可以用来做什么呢,介绍Mongoose之前,我们先简单了解一下MongoDB。 MongoDB是一个开源的NoSQL数据库,相比M...

笔阁
2015/10/13
254
0
Mongoose,nodejs和mongodb的连接器。

简介 今天我们将学习Mongoose,什么是Mongoose呢,它于MongoDB又是什么关系呢,它可以用来做什么呢,介绍Mongoose之前,我们先简单了解一下MongoDB。 MongoDB是一个开源的NoSQL数据库,相比M...

笔阁
2015/10/13
2.2K
0
nodejs mongoose建模实践

一直以来mongoose学习都是比较麻烦的,mongoose-cli试图简化学习和测试mongoose部分,并通过app开发流程反思整个过程中业务逻辑部分如何抽象,以期简化开发与分层实现 app开发流程 如图 这里...

i5ting
2015/08/07
0
0
Node.js开发入门——MongoDB与Mongoose

为了保存网站的用户数据和业务数据,通常需要一个数据库。MongoDB和Node.js特别般配,因为MongoDB是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管...

foruok
2015/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么只有你每次提交代码,log里面会出现merge

http://www.cnblogs.com/Sinte-Beuve/p/9195018.html git的merge和rebase https://blog.csdn.net/liuxiaoheng1992/article/details/79108233...

踏破铁鞋无觅处
14分钟前
0
0
如何学习大数据:spark发布程序

一、对于spark程序只是用于默认的spark包的情况 直接点击pcakage 将程序进行在linux当中进行发布 客户端模式:测试 spark-submit --class com.keduox.App \ --master yarn \ --deploy-mode ...

架构师springboot
15分钟前
0
0
oracle job(定时任务)

创建 定时任务 job declare job number;BEGIN DBMS_JOB.SUBMIT( JOB => job, -- job任务的唯一标识(自动生成) WHAT => 'INSERT into TEXTL (id) VALUES(TEXT......

骑羊放狼灬
18分钟前
0
0
Spring声明式事务在抛出异常时不回滚(RollBack)

Spring声明式事务默认只在RuntimeException时Rollback(回滚),不当的try catch会导致事务不回滚。 spring事务默认运行时异常回滚,RuntimeException 配置时添加异常回滚 rollback-for="Th...

叶落花开
19分钟前
0
0
赋能时空云计算 阿里云数据库时空引擎Ganos上线

随着移动互联网、位置感知技术、对地观测技术的快速发展,时空信息已从传统GIS行业渗透到大众应用及各行各业。从静态POI(兴趣点)到APP位置信息,从导航电子地图到车辆行驶轨迹,从卫星影像...

阿里云云栖社区
21分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部