如何编写代码以在嵌套 table 中使用 where 参数查询 sequelize 模型

How to write code to query sequelize model with where parameter in nested table

我的数据库有用户、喜欢、不喜欢、包裹table。

喜欢、不喜欢、包裹 table 通过 user_id 字段链接到用户 table,该字段存在于每个链接的 table 中.

如何对删除了 = false 字段值的用户 table 中的点赞进行排序。 如果我向用户模型 where

发出请求
let users = await models.users.findAll({
  include: [
    {
      model: Likes,
      as: "likes",          
    },
    {
      model: Dislikes,
      as: "dislikes",          
    },
    {
      model: Parcels,
      as: "parcels",          
    },
  ],
  where: {
    deleted: false,
  },
});

在本例中,我获取了users的所有值table,其中字段deleted = false。

    let users = await models.users.findAll({
  include: [
    {
      model: Likes,
      as: "likes",
      where: {
        deleted: false,
      },
    },
    {
      model: Dislikes,
      as: "dislikes",
     
    },
    {
      model: Parcels,
      as: "parcels",
     
    },
  ],
  where: {
    deleted: false,
  },
});

sequelize 生成的请求文本

SELECT users.id_user, users.name_1, users.name_2, users.name_3, users.nation, users.citizenship, users.dateOfBirth, users.placeOfWork, users.education,
users.url_photo, users.deleted, likes.id_like 作为 likes.id_like, likes.id_user 作为 likes.id_user, likes.date 作为 likes.date, likes.deleted 作为 likes.deleted, dislikes.id_dislike 作为 dislikes.id_dislike, dislikes.id_user 作为 dislikes.id_user, dislikes.date 作为 dislikes.date, parcels.id_parcel 作为 parcels.id_parcel, parcels.id_user 作为 parcels.id_user, parcels.date 作为 parcels.date, parcels.deleted 作为 parcels.deletedusersusers 内部联接 likes AS likes ON users.id_user = likes.id_userlikes.deleted = 假 左外连接 dislikes AS dislikes ON users.id_user = dislikes.id_user 左外连接 parcels AS parcels ON users.id_user = parcels.id_user 其中 users.deleted = 假;

在这种情况下,我只得到用户table中有记录在table中的那些记录,分别是用户table中的所有记录和在喜欢中的所有记录table 删除字段 = false。

但是,我需要检索用户 table 的所有记录,无论他们是否有来自喜欢 table 的相关记录。而且所有记录都必须删除一个字段 - false

我不确定我是否听懂了你的问题,但 required: false 似乎是你所需要的:

let users = await models.users.findAll({
  include: [
    {
      model: Likes,
      as: "likes",
      where: {
        deleted: false,
      },
      required: false,
    },
    {
      model: Dislikes,
      as: "dislikes",
     
    },
    {
      model: Parcels,
      as: "parcels",
     
    },
  ],
  where: {
    deleted: false,
  },
});