我正在尝试使用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打印未定义。为什么会这样?
感谢您的帮助