nodejs + sequelize :: 在需要的地方包含 false

Awe*_*SIM 4 node.js sequelize.js

我有以下对象层次结构:

  1. 用户
  2. 父母(有一个)
  3. 孩子(有很多)

一旦我有了一个用户对象,我就会尝试加载关联的父对象及其一些子对象。以下作品:

user.getParent({
  include: [{
    model: Child
  }]
}).then(function(parent) {
  var children = parent.children;
});
Run Code Online (Sandbox Code Playgroud)

但是如果我想有选择地加载一些父母的孩子,像这样:

user.getParent({
  include: [{
    model: Child,
    where: { gender: 'FEMALE' }
  }]
}).then(function(parent) {
  var daughters = parent.daughters;
});
Run Code Online (Sandbox Code Playgroud)

如果父级有一个或多个女儿,则查询有效,我将获取父级数据以及所有女儿的数据。但是,如果父级只有儿子,则返回的父级对象是null..

我希望如果父级没有女儿,父级对象仍应使用children = null或解决children = []..

另外,如果我想在加载父项时简单地加载子项数,我该怎么做?

谢谢

Awe*_*SIM 9

结果证明是我自己的代码有问题..如果嵌套包含有一个where不返回模型的子句,sequelize 无法加载模型.. 为确保它不会完全失败,您可以设置一个required: false子句以及该where子句..这使得 sequelize 返回一个空白数组,而不是完全失败加载..

更多信息请访问https://github.com/sequelize/sequelize/issues/4019