[英]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_user
, users
。 name_1
, users
. name_1
, users
。 name_2
, users
. name_2
, users
。 name_3
, users
. name_3
, users
。 nation
, users
. nation
, users
。 citizenship
, users
. citizenship
, users
。 dateOfBirth
, users
. dateOfBirth
, users
。 placeOfWork
, users
. placeOfWork
, users
。 education
, education
,
users
. users
。 url_photo
, users
. url_photo
, users
。 deleted
, likes
. deleted
, likes
。 id_like
AS likes.id_like
, likes
. id_like
AS likes.id_like
, likes
。 id_user
AS likes.id_user
, likes
. id_user
AS likes.id_user
, likes
。 date
AS likes.date
, likes
. date
AS likes.date
, likes
。 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.date
, parcels
。 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_user
, parcels
。 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_user
和likes
。 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.