簡體   English   中英

循環中的節點貓鼬不起作用

[英]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);
        });

一切都按預期進行。 有人知道為什么會這樣嗎?

MDN文檔

數組索引只是具有整數名稱的可枚舉屬性,其他方面與常規Object屬性相同。 無法保證for ... in將以任何特定順序返回索引,並且將返回所有可枚舉的屬性,包括具有非整數名稱的屬性和被繼承的屬性。

該0成員可能來自原型鏈中的其他可枚舉屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM