我正在使用node.js和本机mongodb驱动程序(node-mongodb-native);
我当前的项目使用node.js + now.js + mongo-db。
系统基本上将数据从浏览器发送到node.js,后者用haskell处理,然后再次反馈给浏览器。
通过form和node.js,文本被插入名为“messages”的mongo-db集合中。 haskell线程读取条目并将结果存储在db集合“results”中。这很好。
但现在我需要等待结果显示在集合结果中的javascript代码。
伪代码:
wait until the collection result is non-empty.
findOne() from the collection results.
delete the collection results.
我目前连接到这样的mongodb:
var mongo = require('mongodb'),
Server = mongo.Server,
Db = mongo.Db;
var server = new Server('localhost', 27017, {
auto_reconnect: true
});
var db = new Db('test', server);
我的haskell知识相当不错,但不是我的javascript技能。 所以我进行了广泛的搜索,但我没有走得太远。
答案 0 :(得分:2)
解决方案是使用async库。
var async = require('async');
globalCount = -1;
async.whilst(
function () {
return globalCount<1;
},
function (callback) {
console.log("inner while loop");
setTimeout(db_count(callback), 1000);
},
function (err) {
console.log(" || whilst loop finished!!");
}
);
答案 1 :(得分:2)
setTimeout(function(){
db.collection('results',function(coll){
coll.findOne({}, function(err, one){
if( err ) return callback(err);
coll.drop(callback); //or destroy, not really sure <-- this will drop the whole collection
});
});
} ,1000);