如何编写代码以在嵌套 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.deleted
从 users
到 users
内部联接 likes
AS likes
ON users
.id_user
= likes
.id_user
和 likes
.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,
},
});
我的数据库有用户、喜欢、不喜欢、包裹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.deleted
从 users
到 users
内部联接 likes
AS likes
ON users
.id_user
= likes
.id_user
和 likes
.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,
},
});