繁体   English   中英

Javascript不等待For循环。 对象值不变

[英]Javascript not waiting for For loop. Object values not changing

我在Node.js中打了MongoDB。 该呼叫将返回用户列表,每个用户都有各种字段,例如姓名,电子邮件,角色。 返回的字段之一是_id 当我将数据发送回应用程序的前端时,我想要一个没有下划线的字段,所以我创建了一个for循环来迭代列表并添加新密钥。 见下文:

//find all users
User.find({}).select("_id name email locked logins role created lastLogin").exec(function(err, users) {

  //error fetching users
  if (err) throw err;

  //add new id key
  for (var i=0; i<users.length; i++) {
    users[i].id = users[i]._id;
  }

  //send user list
  res.send(users);

});

现在我的问题是res.send(users)似乎没有发送更改的版本,而只是发送原始数据。 如果我将以下内容放入for loop

for (var i=0; i<users.length; i++) {
  users[i].id = users[i]._id;
  console.log(users[i].id);
}

然后,我记录了新字段。 但是,如果我在for循环之外和之后执行console.log(users) ,则会得到原始的未更改数据。 就像正在执行for loop ,然后在for loop完成任务之前先执行res.send

我相信猫鼬会阻止您设置id因为您的User模型中未定义id 如果您希望此方法起作用,请在模型中添加值为mongoose.Types.ObjectId的字段id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM