无法存储Java循环中的数据

时间:2018-07-07 16:20:52

标签: javascript node.js mongodb

我想使用forEach(节点js中的JavaScript)获取值,然后将其存储为数组。但是在循环结束后,我的数组为空或未存储。我不知道问题的原因,请提供任何帮助。

Form1.find({}, function(err, alluser) {
  if (err) {
    res.redirect("back");
  } else {
    var usernames = []; // I want to store the values here
    alluser.forEach(function(getuserid) {
      var userids = getuserid.userid;
      User.findById(userids, function(err, getnames) {
        if (err) {
          var nameitself = userids;
          usernames.push(nameitself);
        } else {
          var firstname = getnames.firstName;
          usernames.push(firstname);
          console.log(usernames); // this returns the stored values at each iterations 
        }
      });
    })
    console.log(usernames); // here I want the values but is empty [], I don't know the problem
    res.send(usernames) // this also sends empty array
  }
});

1 个答案:

答案 0 :(得分:0)

问题是您在考虑同步操作(即逐行执行)方面的代码。

但是实际上,以下行正在访问db,因此它返回了回调

  

User.findById(userids,function(err,getnames)