![](/img/trans.png)
[英]Mongoose is not populating the fields in MongoDB
[英]Populating an array when creating a record in MongoDB with mongoose
我正在編寫一個跟蹤成員及其證書的應用程序。 每個成員都有一些數組,這些數組引用了Mongoose人口文檔中所述的其他模型。
Member
架構 {
name: {
first: String,
last: String
},
unit: Number,
// more stuff
class_year: Number,
campus_box: String,
campus_address: String,
// more stuff
emails: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Email' }],
certifications: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Certification' }],
service_credits: [{ type: mongoose.Schema.Types.ObjectId, ref: 'ServiceCredit' }]
}
Certification
架構 {
type: String,
issue: Date,
expiry: Date,
number: String,
_member: { type: mongoose.Schema.Types.ObjectId, ref: 'Member' }
}
Email
和ServiceCredit
的_member
相似,因為它們都有_member
字段。
創建Email
,它將添加到Email
模型中,隨后我可以執行
var Email = mongoose.model('Email');
Email.findOne().populate('_member').exec(function (err, email) {
console.log(email._member.name.first);
});
但是,它沒有添加到Member
模式的數組中,因為當我運行時
var Member = mongoose.model('Member');
Member.findOne().populate('emails').exec(function (err, member) {
res.json(200, member);
});
我收到emails: []
在JSON中,這顯然是與該成員相關聯的Email
。
我已經閱讀過Mongoose API,該文檔本身需要填充,因此,我嘗試使用以下方法執行http://mongoosejs.com/docs/api.html#document_Document-populate引用的內容:
var Member = mongoose.model('Member');
Member.findOne({ _id: req.session.member._id }, function (err, member) {
member.populate('emails', function (err) {
console.log('populated emails');
});
});
但是我得到了錯誤:( (member's JSON data) has no method 'populate'
。 我知道我正在嘗試populate
錯誤的內容,但是我不知道正確的方法是什么。
我在填充數組時也遇到了問題,您定義的架構將為每個數組元素創建一個子文檔(嘗試轉儲數組)。
嘗試將架構更改為:
emails: [ type: mongoose.Schema.Types.ObjectId ]
和使用
Member.findOne().populate({ path: 'emails', model: 'Email' }).exec(function (err, member) {
res.json(200, member);
});
填充數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.