我有一个“Department”的mongoose模型和另一个“Course”的mongoose模型。一个一对多关系。在课程文档中的department字段下保存department id。我想查询所有的部门,并在一个请求中填充所有的课程。下面是课程模式的代码
const mongoose = require('mongoose')
const courseSchema = new mongoose.Schema(
{
name:{
type: String,
trim: true,
required: true
},
department:{
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: 'Department'
}
module.exports = mongoose.model('Course', courseSchema)
这是部门的代码
const mongoose = require('mongoose')
const validator = require('validator')
const bcrypt = require('bcryptjs')
const departmentSchema = new mongoose.Schema({
title:{
type: String,
required: true
},
admin: {
type: mongoose.Schema.Types.ObjectId,
trim: true,
}
departmentSchema.virtual('courses',{
ref: 'Course',
localField: '_id',
foreignField: 'department'
})
const Department = mongoose.model(' Department',departmentSchema)
module.exports = Department
这是让所有部门
router.get('/departments', async (req, res)=>{
Department.find().populate('courses').exec(function (err, departments) {
if (err) {
res.status(500).send(err)
}
res.status(200).send(departments)
})
})
这段代码只返回部门,而不填充courses数组。
2条答案
按热度按时间7gcisfzg1#
所以我在mongoose文档中找到了解决方案。显然,默认情况下,“virtuals”不包含在toJSON()输出中。如果您希望在使用依赖于JSON.stringify()的函数(如Express的res.json()函数)时显示populate virtuals,请设置virtuals:模式的toJSON选项上的true选项。“所以我修改了我的department模式,如下所示
w1e3prcc2#