【发布时间】:2014-05-20 23:15:14
【问题描述】:
我在遍历结果集然后为每个结果运行另一个查询以附加一些额外数据时遇到问题。
我查看了 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.logs 出现故障。
如果有人能告诉我一种使用 QueryChainer 来实现这一点的方法,那将非常有帮助。
【问题讨论】:
标签: javascript database sequelize.js