运行 对另一个 sequelize 查询的每个结果进行原始查询
Run Sequelize raw query for each result of another sequelize query
我在节点应用程序中使用 sequelize.js 从查询中获取数据,然后 运行 对每个结果元素进行另一个 sequelize 原始查询。但是老兄回调我没有得到结果。
我的代码:
var raw_query1 = "select id,name,has_results from users";
sequelize.query(raw_query1).then(function(results) {
var outputArray = []; // to store use results with additional results
for(i=0;i<results.length;i++){
outputArray[i].name = results[i].name;
var raw_query2 = "select * from meta where user_id = "+resulsts[i].id;
sequelize.query(raw_query2).then(function(meta_results) {
outputArray[i].meta = meta_results;
}
}
return res.json(outputArray); //Returning parsed results
});
我认为我们需要在这里使用 promise,但我是 php 的新手,不知道如何进行,在此先感谢。
您需要使用bluebird.map
。
var raw_query1 = "select id,name,has_results from users";
sequelize.query(raw_query1).then(function(results) {
return bluebird.map(results, function(user){
var raw_query2 = "select * from meta where user_id = "+user.id;
return sequelize.query(raw_query2)
})
.then(function(metas){
return res.json(metas);
});
});
我在节点应用程序中使用 sequelize.js 从查询中获取数据,然后 运行 对每个结果元素进行另一个 sequelize 原始查询。但是老兄回调我没有得到结果。
我的代码:
var raw_query1 = "select id,name,has_results from users";
sequelize.query(raw_query1).then(function(results) {
var outputArray = []; // to store use results with additional results
for(i=0;i<results.length;i++){
outputArray[i].name = results[i].name;
var raw_query2 = "select * from meta where user_id = "+resulsts[i].id;
sequelize.query(raw_query2).then(function(meta_results) {
outputArray[i].meta = meta_results;
}
}
return res.json(outputArray); //Returning parsed results
});
我认为我们需要在这里使用 promise,但我是 php 的新手,不知道如何进行,在此先感谢。
您需要使用bluebird.map
。
var raw_query1 = "select id,name,has_results from users";
sequelize.query(raw_query1).then(function(results) {
return bluebird.map(results, function(user){
var raw_query2 = "select * from meta where user_id = "+user.id;
return sequelize.query(raw_query2)
})
.then(function(metas){
return res.json(metas);
});
});