Javascript 不等待 For 循环.对象值不变
Javascript not waiting for For loop. Object values not changing
我在Node.js中调用了MongoDB。调用返回用户列表,每个用户都有各种字段,例如姓名、电子邮件、角色。返回的字段之一是 _id
。当我将数据发送回应用程序的前端时,我想要一个不带下划线的 this 字段,因此我创建了一个 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
模型中定义。如果您希望这样做,请在模型中添加一个具有值mongoose.Types.ObjectId
字段id
。
相关文章:
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 在for循环中未获取JQuery/JavaScript对象值
- 如何使用for in循环在javascript中显示对象中的对象
- 借助for循环和数组在对象中添加属性
- JS for循环来设置HTML对象参数
- 为什么我不能用for Each迭代对象
- 在for循环-Javascript中创建新对象
- 从Javascript for jqGrid通过JSON发送服务器端对象
- 使用函数for循环遍历对象以更改值,然后返回结果
- 页面对象中的 for 循环未正常运行
- Javascript for.in 对象属性
- 在 JavaScript 中使用 for in 循环从对象中获取值
- 使用javascript在for循环中构建对象
- 为for循环中的对象添加新属性
- Javascript - 使用 for 时遇到问题.以循环访问对象
- 如何在JavaScript中正确地将对象从for循环推送到数组
- 如何在for循环中的新对象中插入数据
- 获取for in循环中对象的名称,用作另一个对象的键
- Javascript-在for循环上从var中的对象获取适当性
- 如何知道你正处于对象for循环的最后一轮