【问题标题】:How to write code to query sequelize model with where parameter in nested table如何编写代码以在嵌套表中使用 where 参数查询 sequelize 模型
【发布时间】:2022-02-08 21:44:36
【问题描述】:

我的数据库有一个用户、喜欢、不喜欢、包裹表。

likes、dislikes、parcels 表通过 user_id 字段链接到 users 表,该字段存在于每个链接表中。

如何对 users 表中已删除 = false 字段值的点赞进行排序。 如果我向用户模型提出请求

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

在这种情况下,我得到了users表的所有值,其中字段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 生成的请求文本

选择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 AS likes.id_like, likes.id_user AS likes.id_user, likes.date AS likes.date, likes.deleted AS likes.deleted, dislikes.id_dislike AS dislikes.id_dislike, dislikes.id_user AS dislikes.id_user, dislikes.date AS dislikes.date, parcels.id_parcel AS parcels.id_parcel, parcels.id_user AS parcels.id_user, parcels.date AS parcels.date, parcels.deleted AS parcels.deleted 发件人users 发件人users 内连接likes AS likes ON users.id_user = likes.id_userlikes.deleted = FALSE 左外连接dislikes AS dislikes ON users.id_user = dislikes.id_user 左外连接 parcels AS parcels ON users.id_user = parcels.id_user 其中users.deleted = 错误;

在这种情况下,我只获取 users 表中分别在 likes 表中有记录的记录,user 表和 likes 表中的所有记录都有字段 deleted = false。

但是,我需要从 users 表中检索所有记录,无论他们是否有来自 likes 表的相关记录。而且所有记录都必须删除一个字段 - 错误

【问题讨论】:

    标签: mysql sql node.js mariadb sequelize.js


    【解决方案1】:

    我不确定我是否收到了您的问题,但您似乎需要 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,
      },
    });
    

    【讨论】:

    • 是的,这就是我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多