繁体   English   中英

在MongoDB上的nodejs猫鼬多对多关系

[英]nodejs mongoose many-to-many relation on MongoDB

我试图在猫鼬的两个文档之间建立多对多关系。 只是无法使其工作。

我一直在尝试使用猫鼬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数组为空。 只是不明白。

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

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

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

一旦更正,它就起作用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM