我试图在猫鼬中建立两个文件之间的多对多关系。只是不能让它发挥作用。
我一直在尝试使用猫鼬populate
方法,但没有成功。有没有人知道如何处理此事的任何好的教程或示例?
更新
获得架构
var EventSchema = new Schema({
users: [{
type: Schema.Types.ObjectId,
ref: 'User'
}]
});
和
var UserSchema = new Schema({
events: [{
type: Schema.Types.ObjectId,
ref: 'Event'
}]
});
在我的测试中,我对event
模型user
赞不绝口。
event.users.push(user);
event.save(function(err, doc) {
user.events[0].should.equal(event._id);
done();
});
首先,我需要以某种方式将已保存的事件推送到添加的用户到事件。然后通过使用填充我应该可以打扮' events
数组和users
数组中的每个对象。最好在post save
回调中,如果我理解正确填充。
此测试篇
it('creates', function(done) {
event.users.append(user);
event.save(function(err, ev) {
user.save(function(err, doc) {
doc.events[0].should.equal(ev._id);
doc.populate('events', function(err, d) {
console.log(d);
done();
});
});
});
});
所以我知道id正确存储,但是当我运行doc.populate()
时,返回的文档的events
数组为空。只是没有得到它。
答案 0 :(得分:1)
使其正常工作...使用mongo-relation
包为我添加所需的ID,但此插件的文档让我更改了架构表单
var UserSchema = new Schema({
events: [{
type: Schema.ObjectId,
ref: 'Event'
}]
});
到
var UserSchema = new Schema({
events: [Schema.ObjectId]
});
一旦纠正,它就有效了。