数组在Mongodb回调中变为未定义

时间:2017-07-01 22:02:15

标签: javascript node.js mongodb

我正在尝试使用Node.js和Mongodb构建社交媒体应用服务器。有两个集合,发送和标签。每个发送都有一个标签值,如" 2,3,4"。这些数字是标签ID。例如

发送

{
  "sendid": "1",
  "content": "Hi",
  "tags": "1,2"
}

和标签

{
  "tagid":"1",
  "content": "tag1"
}

{
  "tagid":"2",
  "content": "tag2"
}

我想将发送标签值转换为带有这些对象的标签数组。打印示例

{
"sendid": "1",
"content": "Hi",
"tags": [{"tagid":"1","content": "tag1"},{"tagid":"2","content": "tag2"}]
}

所以我写了这个函数来做那个

me.getSendsAndTagsWrapper = function(req, dataSearch, dataLimit, callback) {
        db.collection(me.collections.sends)
            .find(dataSearch)
            .skip(dataLimit.from)
            .limit(dataLimit.limit)
            .toArray(function(err, result) {
                if(err) {
                    callback("error: 0");
                    return false;
                }

                var counter = result.length;

                for(var i = 0; i < result.length; i++) {

                    console.log("Result-1 : ", result[i]);

                    db.collection(me.collections.tags).find({tagid:{$in:result[i].tags.split(",")}}).toArray(function(err, newItem) {

                        console.log("Result-2 : ", result[i]);

                        if(err) {
                            callback("error: 0");
                            return false;
                        }
                        result[i].tags = newItem;
                        counter--;
                        if(counter == 0)
                            callback(result);
                    });
                }
            });
    };

但是在这个函数中,Result-1打印出我想要的内容。但是Result-2打印未定义。为什么会这样?

感谢您的帮助

0 个答案:

没有答案