【发布时间】:2015-08-29 06:41:47
【问题描述】:
我有一系列查询需要按特定顺序运行。我一直在尝试这个:
var queries = []
queries.push('update blah set foo="bar"')
queries.push('update baz set bar="foo"')
for(var i=0; i< queries.length; i++){
Promise.all([
migration.sequelize.query(queries[i]).then(function(result){
console.log(result)
})
])
}
done();
这没有按预期工作。有什么建议吗?
更新:在回调中使用递归似乎有效
var queries = []
queries.push('update blah set foo="bar"')
queries.push('update baz set bar="foo"')
var index = 0
var execute = function(queries){
if(typeof queries[index] == 'undefined'){
return done()
}
console.log(queries[index])
migration.sequelize.query(queries[index]).then(function(result){
console.log(result)
index += 1
return execute(queries)
})
}
execute(queries)
【问题讨论】:
-
它在什么方面不起作用?
-
它不会按顺序执行查询。因此,例如,本应在较长查询之后运行的短查询(就执行速度而言)最终在较长查询完成之前运行。
标签: node.js sequelize.js