原文(英)地址:http://mongoosejs.com/docs/in...
在确保你已经安装了MongoDB和Node.js后,可以使用如下的npm命令行安装mongoose:
$ npm install mongoose
现在假设我们钟情于毛绒小猫,想要把见过的每一只小猫都记录下来。那么我们要做的第一件事就是在项目中引入mongoose并用其连接到test数据库。
// getting-started.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
刚才我们已经在本地向test这个数据库发起连接,接下来我们需要获取数据库连接成功或者失败的通知。
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected! 连接成功
});
一旦连接上数据库,我们定义的回调函数就会被触发。为了简单起见,我们约定以下所有代码都将包含在回调函数内。
在Mongoose里,一切都源自于Schema,现在就让我们用它来定义我们的小猫(kittens)
var kittySchema = mongoose.Schema({
name: String
});
到目前为止一切都很顺利,我们定义了一个拥有name属性(String类型)的schema。下一步就是将schema转换成Model
var Kitten = mongoose.model('Kitten', kittySchema);
Model是一个用于构造文档(documents)的类。在这个案例中,每一个文档(documents) 都会拥有schema的属性和行为。下面让我们创建一个小猫的文档,这个小家伙是我们在人行道上遇到的。
var silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'
小猫是会叫的,那么让我们看看如何在文档(documents) 里添加说话的功能:
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,随后暴露给每一个文档的实例:
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();
});
随着时间的流逝,我们想获取所有我们见过的小猫信息,此时我们可以通过kitten model来获取相关信息
Kitten.find(function (err, kittens) {
if (err) return console.error(err);
console.log(kittens);
})
现在我们已经打印出所有小猫的信息,但是如果我们想要过滤出某一特定名字的小猫,Mongoose是支持MongoDB丰富的查询语法的。
Kitten.find({ name: /^fluff/ }, callback);
这将查询所有文档并获取以‘fluff’名称开头的小猫,而后返回一个数组传递给指定的回调函数。
结语
在这篇文章中,我们创建了schema,自定义了一个文档方法,使用Mongoose保存并且查询了数据库中的小猫信息。如想获取更多详细信息,请前往指南或者Api文档。
注:如果反馈良好,我将继续翻译moogoose官方指南
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。