文档章节

mongoose文档

cyper
 cyper
发布于 2015/12/01 00:53
字数 365
阅读 88
收藏 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太好用了。。。数据库和表不用事先存在。 只管用就行。



© 著作权归作者所有

共有 人打赏支持
cyper

cyper

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

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

maweitao
2014/04/11
345
0
nodejs mongoose建模实践

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

i5ting
2015/08/07
0
0
Mongoose,nodejs和mongodb的连接器。

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

笔阁
2015/10/13
1K
0
Nodejs和Mongodb的连接器Mongoose

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

笔阁
2015/10/13
254
0
Mongoose 4.4.17 发布,MongoDB 连接包

Mongoose 4.4.17 发布了,以下是本次发布值得关注的内容: docs: remove repetition in QueryStream docs #4147 hugoabonizio fix(document): dont double-validate doc array elements #414......

oschina
2016/05/14
726
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash各类扩展详解

Bash各类扩展详解 Bash中主要包括大括号扩展、波浪号扩展、变量扩展、子命令扩展、文件名扩展和算数扩展。这些扩展组合在一起为Bash带来了极大的易用性。掌握这些扩展的用法和功能,能够为B...

小陶小陶
42分钟前
1
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
5
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
今天
3
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
今天
3
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部