如何使用sails.js处理包含回调的每个循环的嵌套

时间:2017-05-05 09:26:52

标签: node.js sails.js

我有伪代码 -

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

谢谢。

1 个答案:

答案 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);
  })