gpt4 book ai didi

node.js - Sequelize : Get Subquery/Raw Query as model for include

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:22 26 4
gpt4 key购买 nike

我已经浏览了 Sequelize 文档,但找不到任何有用的内容

我想做的是在 include 中添加原始查询或自定义模型,可以吗?

model.Post.findAll({
include: [{
model: model.User,
attributes: ['fullname', 'profilepic'],
},
{
model: model.PostComments,
},
{
model: "Raw Query"
}
]
}

我想要实现的是:

Select post_id, count(*) as total_likes from post_likes group by post_id

我无法通过简单地使用 include 来实现此目的,因此我想要做的是从上面的查询创建一个表/模型,然后在 include 中使用它。

如果我在include中使用group by,它会从顶层提供group by,并且我想仅针对post_like应用group by表。

如果发现令人困惑或不清楚,请告诉我。

最佳答案

我希望做同样的事情,使用在include内部动态形成的原始查询,但是没有可能的方法来使用include模型https://sequelize.org/master/class/lib/model.js~Model.html#static-method-findAll

出于 MySQL 的目的,我将内部联接(包含)转变为where in。我正在执行内部联接以避免异常此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME 子查询 。我收到此异常是因为我有一个应用了 LIMIT 的子查询。

如果它对任何人有帮助:

let rows = await j_model.findAll({
attributes: [...j_columns, `${association}.meta_key_id`],
include: [
{
model: um_model,
as: association,
attributes: ['um_id'],
on: {'j_id' : {$col: 'j.j_id'} }
],
where: {'j_id': {$in: sequelize.literal(`(SELECT * FROM (${massive_inner_raw_query}) as tmp)`)}},
logging: console.log
});

真正的魔力就在这一行:

where: {'j_id': {$in: sequelize.literal(`(SELECT * FROM (${massive_inner_raw_query}) as tmp)`)}}

SELECT * FROM 删除了该异常,并让我执行 where in 而不是所需的 INNER JOIN。也许您可以对您的问题应用类似的协议(protocol)。

关于node.js - Sequelize : Get Subquery/Raw Query as model for include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47628743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com