使用mongoose之前,首先要确保你的电脑安装了MongoDB和Node。
安装MongoDB的教程可见:
http://www.jianshu.com/p/1bb663918cfd
然后,我们可以用npm指令来安装mongoose:
$ npm install mongoose
接下来,我们就可以使用mongoose来连接MongoDB了,连接方法如下:
// getting-started.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
下面,可以为本次的连接定义两个事件监听的回调函数,当连接成功open和出错error的时候,会分别调用。
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
});
连接成功后,我们就可以对数据库进行操作。我们默认下面的代码是写在连接成功的回调函数中。
规则1: Schema
在Mongoose中,Schema是所有数据的框架和源头。我们必须首先创建Schema。
var kittySchema = mongoose.Schema({
name: String
});
上面这样定义的Schema有一个name属性,类型为String。
下一步,利用Schema,可以生成模型Model。
var Kitten = mongoose.model('Kitten', kittySchema);
模型相当于是一个类,我们使用这个”类”来创建实例,也就是具体的数据对象。
var silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'
如果想要给Kitten类的实例文档添加方法,那么需要在kittySchema上定义:
// NOTE: methods must be added to the schema before compiling it with mongoose.model()
kittySchema.methods.speak = function () {
var greeting = this.name
? "Meow name is " + this.name
: "I don't have a name";
console.log(greeting);
}
var Kitten = mongoose.model('Kitten', kittySchema);
下面,新建的kittens就可以拥有speak方法了:
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak(); // "Meow name is fluffy"
目前为止,我们还没有保存任何东西到MongoDB中。每个文档(实例)都可以被保存到数据库中,只需要使用save方法即可。
fluffy.save(function (err, fluffy) {
if (err) return console.error(err);
fluffy.speak();
});
之后,我们可以通过Model来搜索我们保存的所有kittens.
Kitten.find(function (err, kittens) {
if (err) return console.error(err);
console.log(kittens);
})
当然也可以使用filter来寻找:
Kitten.find({ name: /^fluff/ }, callback);
这样,我们就可以找到所有名字以Fluff开头的kittens。在callback函数中,我们可以查看它们。