如何在 Model.find Sailsjs 中循环

How to Looping inside Model.find Sailsjs

大家好,有人可以建议我应该使用哪个异步函数吗? 就我而言,我需要输出每个组的第一个成员。 *** 请注意,这只是我的程序流程的一个示例。

/*  
    Grouplist               groupmember 
    Id | name           id |  name   | group
    1  | group1          1 |  John   |   1
    2  | group2          2 |  James  |   1   
    3  | group3          3 |  Paul   |   3
                         4 |  Angel  |   2
                         5 |  Anne   |   2
                         6 |  Jane   |   3   

    looking for output like this
        id |  name   | group
         1 |  John   |   1
         4 |  Angel  |   2   
         3 |  Paul   |   3  
*/ 
var name = [];
Grouplist.find( function(err, grouplist){

        for(var x=0;x<=grouplist.length-1; x++){
        groupmember.find({id:grouplist[x].id}).limit(1).exec(
        function callBack(err,results){
        if(err) console.log(err);
        name[x] = results.name;
        })
        }    
        })

您可以使用 mongodb 聚合运算符在一个查询中获得结果:

groupmember.aggregate(
   [
     {
       $group:
         {
           _id: "$group",  //grouping key
           member: { $first: "$$CURRENT" }  //return the first matched document
         }
     },
     {
        $project :   //project the document to top-level
          {     
            _id: "$member._id",
            name: "$member.name",
            group: "$member.group"
          }
    }
   ], 
   function(err, members){
       console.log(members)
   }
)