节点mongoose for in循环不起作用
node mongoose for in loop doesn't work
我有以下代码:
app.get('/api/getSubRooms/:id', function(req, res, next) {
var rooms = [];
Room.findById(req.params.id, function(err, room) {
if (err) throw err;
var rootRoom = room;
console.log("Subrooms: " + rootRoom.subrooms);
for (var subroom in rootRoom.subrooms) {
Room.findById(subroom, function(err, room) {
if (err) throw err;
rooms.push(room);
if (rooms.length === rootRoom.subrooms.length) res.send(rooms);
});
}
});
});
现在数组rootRoom。subrooms包含来自MongoDB的ObjectID,但是for-in循环给我0作为第一个成员,尽管这个成员显然不存在于数组中,如console.log所示。当我使用传统的for循环时:
for (var i=0; i<rootRoom.subrooms.length; ++i) {
Room.findById(rootRoom.subrooms[i], function(err, room) {
if (err) throw err;
rooms.push(room);
if (rooms.length === rootRoom.subrooms.length) res.send(rooms);
});
一切正常。有人知道为什么会这样吗?
From MDN docs:
数组索引只是具有整型名称和的可枚举属性在其他方面与一般对象属性相同。没有保证……In将返回任何特定的索引命令,它将返回所有可枚举的属性,包括那些具有非整数名称和继承的名称。
这个0成员可以来自原型链上的另一个可枚举属性
相关文章:
- 我的javascript for循环不起作用
- javascript for循环不起作用
- 为什么我的While循环不起作用
- JS(node.js)而循环不起作用
- JavaScript 数组/循环不起作用
- Javascript if-else循环不起作用
- 为什么jquery循环不起作用
- JSON 循环不起作用
- 带有本地存储变量的 jQuery 循环不起作用
- 虽然循环不起作用,但只有JavaScript
- 虽然循环不起作用(在其他类似问题中找不到答案)
- 第一个循环不起作用
- jsbin for 循环不起作用 意外的令牌错误
- 为什么循环不起作用
- JQuery ForEeach 循环不起作用
- JavaScript 游戏循环不起作用
- 因为让循环不起作用
- imacros 循环不起作用
- PHP for each 循环不起作用
- JavaScript 确认 PHP 中的弹出窗口,而循环不起作用