📜  mongoose 引用另一个模型 - Javascript (1)

📅  最后修改于: 2023-12-03 15:32:57.750000             🧑  作者: Mango

Mongoose 引用另一个模型

在开发 Node.js 应用时,经常会涉及多个模型之间的关联。Mongoose 提供了一种引用另一个模型的方式,以便更方便地管理多个模型之间的关系。

创建模型

首先,我们需要创建两个模型,假设这两个模型为 UserPost

const mongoose = require('mongoose')

const userSchema = new mongoose.Schema({
  name: String,
})

const User = mongoose.model('User', userSchema)

const postSchema = new mongoose.Schema({
  title: String,
  body: String,
  author: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
  },
})

const Post = mongoose.model('Post', postSchema)

这里我们使用了 mongoose.Schema.Types.ObjectId 类型来定义 Post 模型中的 author 字段,这是因为 author 字段存储的是 User 模型的 _id 属性。属性名 ref 指定了引用的模型名称,这里是 User

引用模型

现在我们已经创建了两个模型,接下来我们可以使用 .populate() 方法引用模型。这个方法可以回填模型数据,使我们在访问模型属性时可以轻松地访问关联模型的属性。比如我们要获取所有的 Post,并显示每个 Post 的标题和作者姓名,我们可以这样做:

Post.find().populate('author').exec(function(err, posts) {
  console.log(posts[0].title)
  console.log(posts[0].author.name)
})

这将返回一些包含 titleauthor 字段的 Post 对象。.populate() 方法将 author 字段引用的 User 对象的数据填充到 Post 对象中,这样我们可以直接访问 Post 对象的 author 属性,而不用再查询 User 对象。

总结

Mongoose 提供了一种引用另一个模型的简便方式,通过使用 .populate() 方法,我们可以轻松地填充关联模型的数据,以便更方便地管理多个模型之间的关系。