仅当 active = true 时,才将 ORM 包含模型序列化

Mak*_*mat 3 postgresql orm node.js sequelize.js

我怎样才能找到所有带有 id: 1 的订单,并且只有当这个项目有 active = true 时才包含项目?否则会有空数组...

Order.findAll({
    where: { id: 1 },
    include: [
      { model: Item, where: sequelize.and({'active' : true }) }
    ]
}).then(function(order) {
    callback(null, order);
});
Run Code Online (Sandbox Code Playgroud)

这仅向我显示了一些带有 active = true 的项目的订单。我想显示所有带有 id: 1 和 items 作为子数组的订单......

Mak*_*mat 5

来自续集教程

将 where 子句添加到 include 会自动使其成为必需

解决办法是这样的:

Order.findAll({
    where: { id: 1 },
    include: [
      { model: Item, 
        where: sequelize.and({'active' : true }),
        required: false 
      }
    ]
}).then(function(order) {
    callback(null, order);
});
Run Code Online (Sandbox Code Playgroud)