[英]How to write code to query sequelize model with where parameter in nested table
我的数据库有一个用户、喜欢、不喜欢、包裹表。
喜欢、不喜欢、包裹表通过 user_id 字段链接到用户表,该字段存在于每个链接表中。
如何对用户表中已删除 = false 字段值的点赞进行排序。 如果我向用户 model 发出请求
let users = await models.users.findAll({
include: [
{
model: Likes,
as: "likes",
},
{
model: Dislikes,
as: "dislikes",
},
{
model: Parcels,
as: "parcels",
},
],
where: {
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,
},
});
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
AS likes.id_like
, likes
。 id_user
AS likes.id_user
, likes
。 date
AS likes.date
, likes
。 deleted
likes.deleted
喜欢。删除, dislikes
。 id_dislike
AS dislikes.id_dislike
喜欢。id_dislike, dislikes
。 id_user
AS dislikes.id_user
喜欢。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
FROM users
AS users
INNER JOIN likes
AS likes
ON users
。 id_user
= likes
。 id_user
和likes
。 deleted
=FALSE LEFT OUTER JOIN dislikes
AS dislikes
ON users
。 id_user
= dislikes
。 id_user
LEFT OUTER JOIN parcels
AS parcels
ON users
。 id_user
= parcels
。 id_user
WHERE users
。 deleted
=假;
在这种情况下,我分别只得到用户表中在likes表中有记录的那些记录,user表和likes表中的所有记录都有字段deleted = false。
但是,我需要从 users 表中检索所有记录,无论他们是否有 likes 表中的相关记录。 而且所有记录都必须删除一个字段 - 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,
},
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.