populate()
บางสาขาในแผนการพังพอนของคุณ
อ่านเอกสารที่นี่
หมายเหตุ: ประชากรเป็นคุณสมบัติที่ทรงพลัง แต่มีข้อ จำกัด และช่วยให้คุณหนีไปด้วยการออกแบบสคีมาที่ไม่ดี โดยเฉพาะอย่างยิ่งมันมักจะเป็นการออกแบบสคีมา MongoDB ที่ไม่ดีเพื่อรวมอาร์เรย์ที่เติบโตโดยไม่ต้องผูกพันในเอกสารของคุณ อย่ารวมอาร์เรย์ที่เพิ่มขึ้นอย่างต่อเนื่องของวัตถุในสคีมาของคุณ - ข้อมูลของคุณจะไม่เป็นไปได้เมื่ออาร์เรย์เติบโตขึ้นและในที่สุดคุณจะได้รับการ จำกัด ขนาดเอกสาร 16 MB โดยทั่วไปคิดอย่างรอบคอบเมื่อออกแบบ schemas ของคุณ
โมดูล mongoose-autopopulate
เปิดเผยฟังก์ชั่นเดียวที่คุณสามารถส่งผ่านไปยังฟังก์ชั่น plugin()
const schema = new mongoose . Schema ( {
populatedField : {
type : mongoose . Schema . Types . ObjectId ,
ref : 'ForeignModel' ,
// The below option tells this plugin to always call `populate()` on
// `populatedField`
autopopulate : true
}
} ) ;
schema . plugin ( require ( 'mongoose-autopopulate' ) ) ;
ใช้ปลั๊กอินนี้กับ schemas ระดับบนสุดเท่านั้น อย่าใช้ปลั๊กอินนี้กับสกีมาเด็ก
// Don't do `nestedSchema.plugin(require('mongoose-autopopulate'))`.
// You only need to add mongoose-autopopulate to top-level schemas.
const nestedSchema = mongoose . Schema ( {
child : { type : Number , ref : 'Child' , autopopulate : true }
} ) ;
const topSchema = mongoose . Schema ( { nested : nestedSchema } ) ;
topSchema . plugin ( require ( 'mongoose-autopopulate' ) ) ;