Post一篇帖子有标题和内容以及类型,
const Post = mongoose.model("Post", new mongoose.Schema({
title: { type: String },
body: { type: String },
category: { type: mongoose.SchemaTypes.ObjectId, ref: 'Category' }, //对应一种类型
//categories: [{ type: mongoose.SchemaTypes.ObjectId, ref: 'Category' }] //对应多种类型
}))
//可通过populate关联查询查出来
const res = await Post.find().populate('category')
若想要通过Categories查出对应的Post 可反向操作,定义虚拟字段
const CategorySchema = new mongoose.Schema({
name: { type: String }
}, {
toJSON: {
virtuals: true //toJson加上虚拟字段,默认是不添加的
}
})
CategorySchema.virtual('posts', {
localField: '_id',
ref: 'Post',
foreignField: 'categories',
justOne: false,
})
const Category = mongoose.model("Category", CategorySchema)
const res = await Category.find().populate('posts')