node.js - JSON 数组的异步迭代

标签 node.js asynchronous mongoose

我将 Node.js 与 MongoDB 结合使用,更具体地说,是 MongoLab 和 Mongoose。

在数据库中,我有两个集合:pours 和users。用户对象将链接到具有共享 cid 的多个浇筑对象。

我需要迭代用户对象数组。但 for 循环不知何故不适用于我想用来修改数组的异步函数。

  express.leaderboard = new Array();

  mongoose.Users.find(function(err, users) {
    for (var i = 0; i < users.length; i++) {
      express.leaderboard[express.leaderboard.length] = users[i];
    };

    for (i = 0; i < express.leaderboard.length; i++){
      updateOunces(i, function(a, fluidOunces){
        console.log(a);
        express.leaderboard[a].set('totalOunces', fluidOunces);
      });
    }
  });

这是我的函数,它将检索用户的总流体盎司。

function updateOunces(i, callback){

    //console.log(express.leaderboard[b].cid);


    mongoose.Pours.find({
      "cid": express.leaderboard[i].cid
    }).exec(function(err, result) {
      var userOunces = 0.0;
      if (!err) {
        for (i = 0; i < result.length; i += 1) {
            for(j = 0; j < result[i].pour.length; j += 1){
                userOunces += result[i].pour[j].fluidOunces;
            }
        }
        callback(i, userOunces);
        return;
        express.leaderboard[i].set ('totalOunces' , userOunces);

      } else {
        console.log(err)
      };
    });
};

有没有办法迭代排行榜数组中的每个对象并向其添加新属性?使用异步?谢谢!

最佳答案

使用async图书馆。

示例)

mongoose.Users.find(function(err, users) {
  async.each(users, function(user, callback) {
    // perform updates here, per user.
    callback();
  }, function(err) {
    // everything is complete.
  });
});

关于node.js - JSON 数组的异步迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24620145/

相关文章:

javascript - 如何渲染异步 forEach 'find' 函数数组的结果?

node.js - 使用 Koa 启动文件下载

javascript - 直接调用类而不是通过实例变量

javascript - 如何异步加载 2 个 Javascript 文件并一个接一个地运行?

angularjs - 为什么我在重新排列文件结构时得到 `MissingSchemaError`?

node.js - 正则表达式在 mongodb 命令行中工作,但不适用于 mongoose

javascript - mongodb在文档更新期间使用if else设置字段值

C# 和任务 - UI 线程挂起 - 预异步/等待关键字

java - 在 tomcat servlet 例程中使用异步 HTTP 客户端更好吗?

mongoose - 使用 MongooseJS 更新文档中的多个字段