我有一个简单的问题,我在这里已经阅读了很多相同的问题,但这些问题并不完全相同或对我不起作用: - (
我有一个名为" addevent"的REST函数。该函数获取一个json输入(req)并遍历json数组以获取一些ID以将它们存储在一个额外的数组中。这很完美!
之后,该函数应该在mongodb中搜索每个id,并从该ID中存储一些额外的信息(例如,该ID的存储URL)。使用" console.log(result.link)"它再次完美。但我的问题是,我需要将此链接存储在一个额外的数组(urlArray)中。
那么如何保存collection.findone()的结果呢?我读过一些关于findone()不返回文档但是光标的内容吗?那是什么意思?在我的情况下,我该如何处理?
代码:
exports.addevent = function(req, res) {
var ids = req.body;
var pArray = new Array();
var urlArray = new Array();
var eventName = ids.name;
for(var i in ids.photos) {
photoArray.push(ids.photos[i]);
var id = ids.photos[i]._id;
var collection = db.get().collection('photos');
collection.findOne({'_id':new mongo.ObjectID(id)},function(err, result) {
console.log(result.link);
}
)
}
非常感谢!
--------------------更新--------------------
好吧,我认为这与asynch Callbacks有关。我发现了一篇文章,但我不知道如何在我的案例中实现它。
http://tobyho.com/2011/11/02/callbacks-in-loops/
关于"承诺"在javascript。
答案 0 :(得分:0)
您可以将搜索结果保存为:
var foundPhoto = collection.find({_id':new mongo.ObjectID(id)}, function(err, photo){
if(!err){
return photo;
} else {
console.log(err)
return null;
}
});
这样您就可以在“photo”变量中获得查询的return语句。