关于 node.js:如何在 sequelize 查询的 where 中使用关系?

How can I use a relation in the where of a sequelize query?

我有两张表,我们称它们为 \\'person\\' 和 \\'car\\',关系如下。一个人可以有 1 辆或 0 辆汽车。在后一种情况下,Car 表中将没有条目。

1
2
3
4
5
6
7
8
Person:
  firstName,
  lastName,
  ....
  hasOne(Car, {
    foreignKey: 'personId',
    AS: 'personsCar'
  })
1
2
3
4
5
6
7
8
Car:
  personId,
  colour,
  ...
  belongsTo(Person, {
    foreignKey: 'personId',
    AS: 'carOwner'
  })

使用 Sequelize 我想从 Person 表中获取所有有"绿色"汽车或没有汽车的人

只是试图用以下任何颜色的汽车来找人会给出错误"列 Person.personsCar 不存在",我如何才能在查询的位置正确引用关系?

1
2
3
4
5
6
7
8
9
10
11
12
Person.findAll({
  include: [
    model: Car,
    AS: 'personsCar',
    attributes: ['colour'],
  ],
  WHERE: {
    personsCar: {
      [op.eq]: NULL,
    },
  },
})

你可以这样做:

1
2
3
4
5
6
7
8
9
10
Person.findAll({
    include: [
        model: Car,
        AS: 'personsCar',
        attributes: ['colour'],
        WHERE: {
            colour : 'green' // <---- YOUR COLOUR
        },
    ],
})