我希望在一些看起来像这样的代码中更新Mongo集合:
var Q = Npm.require('q');
var db = new Mongo.Collection('mydb');
function doSomething() {
var d = Q.defer();
setTimeout( function() {
d.resolve();
}, 1000);
return d.promise;
}
doSomething().then( function() {
console.log('before find');
var records = db.find({}).fetch(); // blocking operation never completes
console.log('after find');
console.log(records); // should be []
});
当使用上面的代码运行meteor时,它会在查找"之前得到记录"但随后执行停止等待db.find
完成。它永远不会完成。
对此有任何解决方案或解决方法吗?
更新:似乎导致问题的.fetch()
。我需要这个部分,我想操纵我从Mongo收到的数据。
答案 0 :(得分:1)
不使用fetch,而是添加回调函数。 它将允许您在检索数据后操作数据:
var records = db.find({}, function(error, data){
// Do something with your data here
});
**编辑 - 使用上面的回调,返回一个光标。如果要返回包含结果的数组,请使用以下命令:
var records = db.find({}).toArray(function(error, data){
// Do something with your data here
});