สคีมาพังพอนบันทึกสคีมาที่ซ้อนกันเป็นรหัสเท่านั้น ไม่ใช่เป็นวัตถุ

ฉันมีสคีมาพังพอน 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, serialNumber: '12455223', หัวเรื่อง: 'ชั้นเรียนวันนี้', classDescription: 'desc', curriculumVersion: '2', scheduleDateTime: ' 01 ม.ค. 04:00 น. __v: 3 }

ดังนั้นจึงบันทึกเฉพาะรหัสวัตถุเท่านั้น ดังนั้นฉันจึงไม่สามารถเข้าถึงผู้เขียนหรือความคิดเห็นได้ มีความคิดอะไรบ้าง? ฉันเห็นคำถามที่เกี่ยวข้องมากมาย แต่ไม่ใช่คำถามที่มีคำตอบที่ต้องการ ดังนั้นฉันจึงขออภัยล่วงหน้าหากมีคำถามนี้อยู่แล้ว


person Justin Y    schedule 04.01.2020    source แหล่งที่มา


คำตอบ (2)


คุณสามารถเติมข้อมูลรวมได้เช่นกัน เช่นนี้

db.aclassModel.aggregate([ { $lookup: { from: "*youfeedbackcollection*", foreignField: "_id", localField: "feedbacks", as: "fee" } } ]

person Raul Sanchez Reyes    schedule 04.01.2020

ตกลง ฉันเพิ่งรู้ว่าฉันต้องใช้ "เติม" ดังต่อไปนี้:

AClass.findById(req.params.id).populate("feedbacks"), function(err, aClass){}...

แน่นอนฉันพบมันทันทีหลังจากที่ฉันโพสต์คำถาม...

person Justin Y    schedule 04.01.2020