gpt4 book ai didi

javascript - 循环查询结果并使用 QueryChainer 对每个结果运行另一个查询

转载 作者:行者123 更新时间:2023-12-02 17:22:45 25 4
gpt4 key购买 nike

我在循环访问结果集然后对每个结果运行另一个查询以附加一些附加数据时遇到问题。

我查看了 Sequelize.js 的 Github 问题,发现可以 use QueryChainer to achieve this 。然而,由于我在这方面还是个新手,所以我还不知道如何做到这一点。我的 for 循环的执行是异步发生的,导致发送响应时没有附加数据。

这是我现在的做法:

// in blogs.js
var db = require('../models')

exports.findPosts = function(req, res) {

if (req.User) {

req.User.getPosts({
include: [
{ model: db.User, attributes: ['displayName', 'profilePicture'] },
{ model: db.Game, attributes: ['name'] }
]
}).success(function(posts) {

console.log('Starting the loop...')

for (var i in posts) {

db.PostLikes.count({ where: { PostId: i.id } }).success(function(likes) {

i.Likes = likes
console.log('Fetched Likes for post #' + i.id)

})

}

console.log('This should appear last!')
res.json(posts)

}).error(function(err) {

console.log(err)
res.send(404)

})

} else {
res.send(404)
}
}

上述代码导致发送响应时没有将 Likes 属性附加到每个 post 项目。由于 db.PostLikes.count() 调用的异步性,console.log 出现困惑。

如果有人可以向我展示一种使用 QueryChainer 来实现此目的的方法,那将会非常有帮助。

最佳答案

致正在寻找此问题解决方案的任何人:

我在 SequelizeJS 维护者之一的帮助下解决了这个问题 on Github 。我的解决方案的一部分是使用“bluebird”库来实现 Promise。可能可以使用不同的库,但我还没有使用任何其他库测试我的代码。

Here's a Gist of my code.我希望这可以帮助任何遇到此问题的人:)

关于javascript - 循环查询结果并使用 QueryChainer 对每个结果运行另一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771493/

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