如何使用 Waterline 进行可选关联?

How to have an optional association using Waterline?

我正在为一个项目使用 sails.js,到目前为止一切正常。除了我不知道如何在我的两个模型之间建立可选关联。如果我不指定一个,那么如果我使用 populate() 它会使用第一个可用的。

我有这两个型号:

// Book.js
module.exports = {

  attributes: {
    title: 'string',
    serie: { model: 'serie' }
  },

};

// Serie.js
module.exports = {

  attributes: {
    name: 'string',
    books: { collection: 'book', via: 'serie' }
  }

};

如果我这样做:

$ sails console
> Book.create({title: "Title"}).exec(function(err, book) {
    Book.findOne({id: book.id }).populateAll().exec(function(err, book) {
        console.log(book);
    });
});

我明白了:

{
  serie: { name: 'Previously inserted serie' },
  title: 'Title',
  id: '55d6230122e3b1e70d877351'
}

为什么系列不是空的?插入书时,我没有指定任何系列,但它仍然链接到一个随机的。

这实际上是 sails-mongo 适配器的错误。我提出了修复它的拉取请求。