mongoose学习笔记1:起步
首先你需要确保你的电脑已经安装了 MongoDB 和 Node.js 。
接着在命令行工具使用 npm
安装 Mongoose :
$ npm install mongoose
现在,假设我们很喜欢猫,并且希望在 MongoDB 中记录下我们遇见过的每一只猫。那么我们首先要做的就是在我们的项目中引入 mongoose ,然后创建实例用于连接 MongoDB 中一个名为 test
的数据库。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
我们已经连接了本地的数据库,现在我们希望在连接成功或者连接失败时,能够收到通知信息:
mongoose.connection.on('error', function (err) {
console.info('connection error:', err);
});
mongoose.connection.once('open', function () {
// 连接成功!
});
每当数据库连接成功时,我们的回调函数将会被调用。为了简洁起见,接下来的代码都默认写作这个回调函数里。
在 Mongoose 中,一切事物都源于一个 Schema 。下面我们声明一个 Schema 用来描述我们的猫:
var kittySchema = new mongoose.Schema({
name: String
});
很好,现在我们有了一个带有 name
属性的 Schema 。下一步,我们需要将 Schema 编译成一个 Model:
var Kitten = mongoose.model('Kitten', kittySchema);
一个 Model 就是我们用于构建 MongoDB 文档的类。在这个例子中,每一个 Model 实例(也称为 “文档” )都将表示一只带有我们在 Schema 中声明的属性和方法的猫。现在,我们就可以创建一个 Model 实例,用来表示我们在路上遇见的猫了:
var silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'
每一只猫都会叫,那么让我们来看看,如何给我们的 Model 实例添加一个叫 "speak" 的方法吧:
// 注意:所有的方法都应在使用 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);
方法被添加在 Schema 的 methods 属性上,编译后被添加在 Model 的原型中,每一个 Model 实例都可以调用:
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak(); // "Meow name is fluffy"
直到目前为止,我们还没有向 MongoDB 保存任何数据。我们可以调用 Model 实例的 save 方法,将每一个 Model 实例保存到 MongoDB 里。如果在这过程中出现错误,那么回调函数的第一个参数则是报错信息:
fluffy.save(function (err, fluffy) {
if (err) return console.error(err);
fluffy.speak();
});
随着时间的流逝,我们想看看被保存在数据库中的猫。那么我们可以通过使用 Model 的 find
方法来查找所有被保存在数据库中的猫:
Kitten.find(function (err, kittens) {
if (err) return console.error(err);
console.log(kittens);
});
现在我们已经将数据库中所有的猫打印在控制台中,那么如果你想通过猫的 name 属性来过滤掉部分数据,Mongoose 也支持 MongoDB 中丰富的查询语法:
Kitten.find({ name: /^fluff/ }, callback);
上面演示的,就是查询所有 name 属性是以 "fluff" 开头的文档,它将以数组的形式,被传入到 callback 函数中。
直到这里,我们已经通过使用 Mongoose 创建了一个 Schema,添加了一个自定义的 Methods 方法,将 Model 实例保存在 MongoDB 中并进行查询。下一篇文章中,我们将展开更深入的学习。更多详细教程,可以访问 mongoose 官网进行学习。