nodejs + sequelize :: include where required false

时间:2015-06-27 17:20:05

标签: node.js sequelize.js

我有以下对象层次结构:

  1. 用户
  2. parent(hasOne)
  3. children(hasMany)
  4. 一旦我有了一个用户对象,即时尝试加载关联的父对象以及其子项的一些。以下作品:

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

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

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

    如果父母有一个或多个女儿,那么查询就会起作用,我会得到父数据以及所有的女儿。数据。 但是,如果父亲只有儿子,则返回的父对象为null ..

    我希望如果父母没有女儿,则仍应使用children = nullchildren = []解析父对象..

    另外,如果我想在加载父母的同时加载一个孩子的数量,我该怎么做呢?

    感谢

1 个答案:

答案 0 :(得分:3)

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

https://github.com/sequelize/sequelize/issues/4019

的更多信息