📅  最后修改于: 2023-12-03 15:32:57.750000             🧑  作者: Mango
在开发 Node.js 应用时,经常会涉及多个模型之间的关联。Mongoose 提供了一种引用另一个模型的方式,以便更方便地管理多个模型之间的关系。
首先,我们需要创建两个模型,假设这两个模型为 User
和 Post
:
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)
})
这将返回一些包含 title
和 author
字段的 Post
对象。.populate()
方法将 author
字段引用的 User
对象的数据填充到 Post
对象中,这样我们可以直接访问 Post
对象的 author
属性,而不用再查询 User
对象。
Mongoose 提供了一种引用另一个模型的简便方式,通过使用 .populate()
方法,我们可以轻松地填充关联模型的数据,以便更方便地管理多个模型之间的关系。