我正在尝试使用我的包含中的单独属性来计算关联条目以提高性能(没有它,它需要 5 秒的请求)。但我收到以下错误:
"message": "缺少表 "likedPosts"的 FROM 子句条目"
对不起,英语不好,这不是我的第一次。我希望你能理解并帮助我。
我的代码:
@Query((returns) => [Post], {
nullable: true
})
async getAllFeedPostsByUserId(@Arg('user_id') user_id: number): Promise < Post[] > {
const result = await Post.findAll({
attributes: {
include: [
[Sequelize.fn("COUNT", Sequelize.col("likedPosts.feed_post")), "likesAmount"]
]
},
include: [{
model: LikedPosts,
as: 'likedPosts',
attributes: [],
separate: true,
}, ]
});
return result;
}
最佳答案
我认为 group 是必须计算条目的。
Post.findAll({
attributes: {
include: [[Sequelize.fn('COUNT', Sequelize.col('likedPosts.feed_post')), 'likesAmount']]
},
include: [{
model: LikedPosts,
attributes: []
}],
group: ['likedPosts.feed_post'] // groupBy is necessary else it will generate only 1 record with all rows count
})
我可以看到 seperate
separate desc详细说明:默认情况下,要检索相关模型实例,Sequelize 将使用 SQL JOIN。通过启用单独,Sequelize 将为每个关联的模型执行单独的查询,并在代码中连接结果文档(而不是让数据库执行连接)。
关于javascript - Sequelize 计数关联条目与单独的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63620913/