【Mongoose 7.x 中文文档】Getting Started

Getting Started

首先确保你安装了 MongoDBNode.js

接下来使用npm在命令行安装 Mongoose:

npm install mongoose --save

现在假设我们都很喜欢小猫咪,想在 MongoDB 中记录下我们遇到过的每只猫咪。
首先我们要在项目中引入 mongoose ,然后连接我们本地的 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:password@127.0.0.1:27017/test');` if your database has auth enabled
}

为简洁起见,现在我们假设接下来的代码都在 main 函数内。

Mongoose 中, 所有东西都由 摘要(Schema) 派生。
让我们看一个参考并定义我们的小猫。

const kittySchema = new mongoose.Schema({
  name: String
});

非常棒。我们得到了拥有一个类别为 String 的属性 name 的 摘要(Schema)。下一步是把我们的 schema 编译为一个 模型(Model).

const Kitten = mongoose.model('Kitten', kittySchema);

模型是我们用于构造 document 的类。
在这个例子中,每个 document 都是一只小猫,它们都拥有我们在 schema 中声明的属性和行为。
让我创建一个小猫 document,来代表我们刚刚在外面的人行道上遇到的小家伙:

const silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'

喵咪可以喵喵叫, 所以让我们瞧瞧如何为 documents 添加一个 add 方法:

// 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);

被添加在 schema 中 methods 属性上的所有方法,将被编译到 Model 原型(prototype)上并会暴露给每个文档(documnet)实例:

const fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak(); // "Meow name is fluffy"

我们拥有了会说话的猫咪!但是我们仍然没有往 MongoDB 中保存任何东西。
每个文档都可以通过调用其 save 方法被保存到数据库中。如果发生任何错误,回调的第一个参数将是错误。

await fluffy.save();
fluffy.speak();

假设时间流逝,我们想展示我们见过的所有小猫。
我们可以获取到所有的猫咪文档通过 Kitten model.

const kittens = await Kitten.find();
console.log(kittens);

我们刚刚将数据库中的所有小猫记录到控制台。如果我们想按名称检索我们的小猫,Mongoose 支持 MongoDB 丰富的 查询(querying)语法。

await Kitten.find({ name: /^fluff/ });

这将对具有以 ‘fluff’ 开头的 name 属性的所有文档执行搜索,并将结果作为猫咪数组返回给回调。

恭喜

我们快速入门到此结束。我们创建了一个摘要(schema),添加了自定义文档(document)方法,使用 Mongoose 在 MongoDB 中保存和查询了猫咪。前往 指南API 文档 了解更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值