我有2种猫鼬模式:第一个是“反馈”:
var feedbackSchema = new mongoose.Schema({
author: String,
student: String,
gender: String,
content: String
});
是第二个“ aClass”的成员:
var aClassSchema = new mongoose.Schema({
serialNumber: String,
title: String,
classDescription: String,
curriculumVersion: String,
scheduledDateTime: String,
feedbacks: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Feedback"
}
]
});
在一个ejs文件中,我试图像这样访问反馈的作者:
<div style="width: 700px; margin: 50px auto; background-color:lightgrey; border: 3px solid black">
<% aClass.feedbacks.forEach(function(feedback){ %>
<p style="margin: 10px"><strong><%= feedback.author %> - <%= feedback.content %></strong></p>
<% }); %>
<p>
</div
但是我不能,因为在检查“ aClass”对象时,我得到以下信息:
{反馈: [5e109f3fd1a6540cd8286628,5e10b1f64c82be15a9d9bda1,5e10b23f38800515b7415b4a] ,_ id:5e109f3fd1a6540cd8286626,序列号:'12455223',标题:' ScheduleDateTime:“ 1月1日04:00 AM”,__ v:3}
因此,它仅保存对象ID,因此我无法访问作者或注释。有任何想法吗?我看到了许多相关问题,但没有一个能找到我要的答案,因此,如果这个问题已经存在,我会提前道歉。
答案 0 :(得分:1)
您也可以像这样填充聚合:
db.aclassModel.aggregate([
{
$lookup: {
from: "*youfeedbackcollection*",
foreignField: "_id",
localField: "feedbacks",
as: "fee"
}
}
]
答案 1 :(得分:0)
好,所以我才意识到我必须使用“填充”,如下所示:
AClass.findById(req.params.id).populate("feedbacks"), function(err, aClass){}...
当然,我在发布问题后就发现了它。