gpt4 book ai didi

node.js - Sequelize.js 查询连接两个表,并在连接表上使用 where 子句

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

我正在尝试使用sequelizejs从博客表中获取最新的博客文章,包括已批准的所有相应评论(来自单独的评论表)。评论数据库有一个字段“blog_id”,其中包含相应博客的 ID。

如果我这样做:

models.blogs.hasMany(models.comments, {foreignKey:'blog_id'})
models.comments.belongsTo(models.blogs, {foreignKey:'blog_id'})
models.blogs.findAll({where:{id:id},order:"id DESC", limit:1, include: [{model: models.comments, where:{approved:true}}]}).then(function(blogs){
res.json(blog:blogs[0])
});

结果是最新的博客文章已被批准的评论,而不是最新的博客文章任何已批准的评论。

我的解决方法是进行两个查询:

models.blogs.findAll({order:[["id","DESC"]],limit:1}).then(function(blogs){
var blog = blogs[0];
models.comments.findAll({where:{"blog_id":blog.id,"approved": true}}).then(function(comments){
res.json({
blog:blog,
comments:comments
})
})
});

它很好,很实用,但不优雅。

只是想知道什么是单一查询解决方案。

最佳答案

您需要在 include 中指定必需的 false,默认为 true。

models.blogs.findAll({
where: {
id: id
},
order: "id DESC",
limit: 1,
include: [{
required : false,
model: models.comments,
where: {
approved: true
}
}]
})
.then(function(blogs) {
res.json(blog: blogs[0])
});

关于node.js - Sequelize.js 查询连接两个表,并在连接表上使用 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35305786/

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