入门
接下来,使用 npm
从命令行安装 Mongoose
npm install mongoose --save
现在假设我们喜欢毛茸茸的小猫,并且想要记录我们在 MongoDB 中遇到的每只小猫。我们要做的第一件事是在我们的项目中包含 mongoose 并打开连接到本地运行的 MongoDB 实例上的 test
数据库。
// getting-started.js
const mongoose = require('mongoose');
main().catch(err => console.log(err));
async function main() {
await mongoose.connect('mongodb://127.0.0.1:27017/test');
// use `await mongoose.connect('mongodb://user:[email protected]:27017/test');` if your database has auth enabled
}
为了简洁起见,假设所有以下代码都在 main()
函数中。
在 Mongoose 中,一切都源于 模式。让我们获取对它的引用并定义我们的小猫。
const kittySchema = new mongoose.Schema({
name: String
});
到目前为止一切顺利。我们有一个模式,它有一个属性 name
,它将是一个 String
。下一步是将我们的模式编译成一个 模型。
const Kitten = mongoose.model('Kitten', kittySchema);
模型是一个类,我们用它来构造文档。在本例中,每个文档都将是一只小猫,具有我们在模式中声明的属性和行为。让我们创建一个小猫文档,代表我们刚刚在外面人行道上遇到的那只小家伙
const silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'
小猫会喵喵叫,所以让我们来看看如何为我们的文档添加“说话”功能
// NOTE: methods must be added to the schema before compiling it with mongoose.model()
kittySchema.methods.speak = function speak() {
const greeting = this.name
? 'Meow name is ' + this.name
: 'I don\'t have a name';
console.log(greeting);
};
const Kitten = mongoose.model('Kitten', kittySchema);
添加到模式 methods
属性中的函数将被编译到 Model
原型中,并在每个文档实例上公开
const fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak(); // "Meow name is fluffy"
我们有会说话的小猫了!但我们还没有将任何东西保存到 MongoDB 中。每个文档都可以通过调用其 save 方法来保存到数据库中。回调的第一个参数将是任何发生的错误。
await fluffy.save();
fluffy.speak();
假设时间流逝,我们想要显示我们看到的所有小猫。我们可以通过我们的 Kitten 模型 访问所有的小猫文档。
const kittens = await Kitten.find();
console.log(kittens);
我们刚刚将数据库中所有的小猫记录到控制台。如果我们想按名称筛选小猫,Mongoose 支持 MongoDB 的丰富 查询 语法。
await Kitten.find({ name: /^fluff/ });
这将执行搜索所有具有以“fluff”开头的名称属性的文档,并将结果作为小猫数组返回给回调。
恭喜
这就是我们的快速入门教程的结尾。我们创建了一个模式,添加了一个自定义文档方法,使用 Mongoose 在 MongoDB 中保存和查询小猫。前往 指南 或 API 文档 获取更多信息。