我有伪代码 -
foreach(clients){
foreach(orderids)
{
//call asynchronous findOne()
if(client_Has_OrderId){
count++;
}
}//close foreach orderids
storeInArray(client,count);
}//close client foreach loop
我是sails.js的新手,并且不知道如何在sails.js中编写代码。我没有异步编程的经验。当我以同步方式编写代码时,期望结果不会得到。
结果应该看起来像 -
client1 1
client2 5
client3 0
谢谢。
答案 0 :(得分:0)
我建议您查看风帆reference以及concepts section。
它总是取决于您的设置:我假设您已经为您的订单设置了一个外键(请参阅OneToMany),因此您可以填充您的值并直接在承诺中访问它们,这将是优化的方式来查询您想要的结果。
ES 5兼容代码可能如下所示:
请注意,我使用lodash(或下划线)来验证数组 - 如果你没有在配置中禁用它,默认情况下会包含在sails.js中。
Client.find({your:'criteria'})
.populate('orders')
.then(function(clients){
var orderIndex = {};
_.forEach(clients, function(client, index){
if(!_.isArray(client.orders)) {
orderIndex[client.id] = 0;
} else {
orderIndex[client.id] = client.orders.length;
});
// do something with [orderIndex]
})
.catch(function(e){
console.log(e);
})