node.js - 如何在 Model.find Sailsjs 中循环

标签 node.js sails.js async.js sails-mongo

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

/*  
    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)
   }
)

关于node.js - 如何在 Model.find Sailsjs 中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978578/

相关文章:

javascript - 如何在 Sails.js 中嵌入和编写 mongo 对象(不止一层深)?

javascript - 回调不是异步 echOfSeries 中的函数

javascript - Node.js 异步模块的 forEachOf 方法中未调用可选回调

node.js - 安装包时出现未知错误

mysql - Waterline ORM 在 MySQL 上插入空白单元

node.js - 我如何使用 Loopback.io 设置 SMTP

javascript - sails.js 中使用不同数据类型的“或”查询

javascript - SAPUI5 - 存在异步函数时的路由问题

node.js - 发布 package-lock.json 时出现什么问题

javascript - 使用计数预分配记录