Javascript 使用mongoose在MongoDB中创建记录时填充数组
我正在写一个应用程序来跟踪成员及其证书。每个成员都有一些引用其他模型的数组,如中所述Javascript 使用mongoose在MongoDB中创建记录时填充数组,javascript,mongodb,express,mongoose,Javascript,Mongodb,Express,Mongoose,我正在写一个应用程序来跟踪成员及其证书。每个成员都有一些引用其他模型的数组,如中所述 成员架构 认证模式 电子邮件和服务信用的模式相似,它们都有\u成员字段 当我创建电子邮件时,它被添加到电子邮件模型中,我可以随后执行 var Email = mongoose.model('Email'); Email.findOne().populate('_member').exec(function (err, email) { console.log(email._member.name.first
成员
架构
认证
模式
电子邮件
和服务信用
的模式相似,它们都有\u成员
字段
当我创建电子邮件
时,它被添加到电子邮件
模型中,我可以随后执行
var Email = mongoose.model('Email');
Email.findOne().populate('_member').exec(function (err, email) {
console.log(email._member.name.first);
});
但是,它不会添加到成员
模式中的数组中,因为当我运行
var Member = mongoose.model('Member');
Member.findOne().populate('emails').exec(function (err, member) {
res.json(200, member);
});
我收到JSON中的电子邮件:[]
,而显然有一封电子邮件与该成员关联
我在Mongoose API上读到,文档本身需要填充,因此我尝试使用以下内容来执行在中引用的操作:
var Member = mongoose.model('Member');
Member.findOne({ _id: req.session.member._id }, function (err, member) {
member.populate('emails', function (err) {
console.log('populated emails');
});
});
但是我得到了一个错误:(成员的JSON数据)没有方法“填充”
。我知道我试图在错误的东西上运行populate
,但我不知道正确的方法是什么。我也遇到了填充数组的问题,您定义的模式将为每个数组元素创建一个子文档(尝试转储数组)
尝试将架构更改为:
电子邮件:[类型:mongoose.Schema.Types.ObjectId]
和使用
Member.findOne().populate({ path: 'emails', model: 'Email' }).exec(function (err, member) {
res.json(200, member);
});
要填充数组。您必须手动将新电子邮件的ObjectId
添加到相应成员的电子邮件数组中;你在这么做吗?
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.findOne().populate({ path: 'emails', model: 'Email' }).exec(function (err, member) {
res.json(200, member);
});