nodejs在MongoDB上拥有多对多的关系

时间:2014-03-04 20:51:37

标签: node.js mongodb mongoose many-to-many

我试图在猫鼬中建立两个文件之间的多对多关系。只是不能让它发挥作用。

我一直在尝试使用猫鼬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数组为空。只是没有得到它。

1 个答案:

答案 0 :(得分:1)

使其正常工作...使用mongo-relation包为我添加所需的ID,但此插件的文档让我更改了架构表单

var UserSchema = new Schema({
  events: [{
    type: Schema.ObjectId,
    ref: 'Event'
  }]
});

var UserSchema = new Schema({
  events: [Schema.ObjectId]
});

一旦纠正,它就有效了。