简体   繁体   English

如何编写代码在嵌套表中使用where参数查询sequelize model

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

My database has a users, likes, dislikes, parcels table.我的数据库有一个用户、喜欢、不喜欢、包裹表。

The likes, dislikes, parcels tables are linked to the users table by the user_id field, which is present in each of the linked tables.喜欢、不喜欢、包裹表通过 user_id 字段链接到用户表,该字段存在于每个链接表中。

How to sort likes in the users table that have deleted = false field values.如何对用户表中已删除 = false 字段值的点赞进行排序。 If I make a request to the users model where如果我向用户 model 发出请求

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

In this case, I get all the values of the users table, where the field deleted = false.在本例中,我获得了用户表的所有值,其中字段 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,
  },
});

The text of the request that sequelize generates sequelize 生成的请求文本

SELECT users . SELECT users id_user , users . id_userusers name_1 , users . name_1users name_2 , users . name_2users name_3 , users . name_3users nation , users . nationusers citizenship , users . citizenshipusers dateOfBirth , users . dateOfBirthusers placeOfWork , users . placeOfWorkusers education , education
users . users url_photo , users . url_photousers deleted , likes . deletedlikes id_like AS likes.id_like , likes . id_like AS likes.id_likelikes id_user AS likes.id_user , likes . id_user AS likes.id_userlikes date AS likes.date , likes . date AS likes.datelikes deleted AS likes.deleted , dislikes . deleted likes.deleted喜欢。删除, dislikes id_dislike AS dislikes.id_dislike , dislikes . id_dislike AS dislikes.id_dislike喜欢。id_dislike, dislikes id_user AS dislikes.id_user , dislikes . id_user AS dislikes.id_user喜欢。id_user, dislikes date AS dislikes.date , parcels . date AS dislikes.dateparcels id_parcel AS parcels.id_parcel , parcels . id_parcel AS parcels.id_parcel , parcels id_user AS parcels.id_user , parcels . id_user AS parcels.id_userparcels date AS parcels.date , parcels . date AS parcels.date 。日期, parcels deleted AS parcels.deleted FROM users AS users INNER JOIN likes AS likes ON users . deleted AS parcels.deleted FROM users AS users INNER JOIN likes AS likes ON users id_user = likes . id_user = likes id_user AND likes . id_userlikes deleted = FALSE LEFT OUTER JOIN dislikes AS dislikes ON users . deleted =FALSE LEFT OUTER JOIN dislikes AS dislikes ON users id_user = dislikes . id_user = dislikes id_user LEFT OUTER JOIN parcels AS parcels ON users . id_user LEFT OUTER JOIN parcels AS parcels ON users id_user = parcels . id_user = parcels id_user WHERE users . id_user WHERE users deleted = FALSE; deleted =假;

In this case, I get only those records of the users table that have records in the likes table, respectively, all records in the user table and in the likes table have the field deleted = false.在这种情况下,我分别只得到用户表中在likes表中有记录的那些记录,user表和likes表中的所有记录都有字段deleted = false。

However, I need to retrieve all records from the users table whether they have related records from the likes table or not.但是,我需要从 users 表中检索所有记录,无论他们是否有 likes 表中的相关记录。 And also all records must have a field deleted - false而且所有记录都必须删除一个字段 - false

I'm not sure that I got your question, but it seems that required: false is what you need:我不确定我是否收到你的问题,但似乎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,
  },
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM