node.js - nodejs + sequelize::include where required false

标签 node.js sequelize.js

我有以下对象层次结构:

  1. 用户
  2. parent (有一个)
  3. child (有很多)

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

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

但是如果我想有选择地加载 parent 的 child 的一些,像这样:

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

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

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

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

谢谢

最佳答案

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

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

关于node.js - nodejs + sequelize::include where required false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31091420/

相关文章:

node.js - 具有相同名称的 typescript 类在不同文件中重复

node.js - multer 中间件内的 req.body 中缺少某些属性

mysql - 我想使用sequelize nodejs 将四个不同表中的数据添加在一起

sequelize.js - Sequelize 在重复键上插入没有错误

javascript - 模型与 Sequelize 之间的关联如何?

node.js - 记录Node的stdout和stderr

node.js - 如何将一个永远启动的 nodejs 应用程序带到前台?

javascript - Node.js中的内存泄漏-如何分析分配树/根?

node.js - Sequelize.js 关联访问器

javascript - DAO 与 ORM - 在 Sequelize.js 的上下文中解释的概念