我正在windows10上开发一个MEAN堆栈。我为mongodb的findAll,gridstore.open和gridstore.write(以及几乎所有mongodb的函数。这些是我遇到的麻烦)创建了一个包装助手,它使用了deasync,因此我不必通过回调。我正在经历我的回调函数没有被调用!并不总是,但有时候。但是当我在Mac上运行时,总是会调用回调。总是。我的问题是,
1)mongodb上是否有任何日志为什么我的回调没有被调用?
2)如docs中所述,是否有可能在Windows(vs mac)上以不同方式处理群集进程(请清除它)虽然在我实现群集之前,我已经遇到了这个问题。
聚苯乙烯。我在Windows 10上运行并尝试通过process.send接收和传递,this似乎也发生在我身上。
这是我的MongoDB Helper包装器的代码片段
exports.FindAll = function(db, collectionName, qObj){
var retVal = [];
var done = false;
var errObj;
if(!qObj)
qObj = {};
var functionExec = function(err, db){
var cursorObj = db.collection(collectionName).find(qObj);
cursorObj.each(function callback(err, result){
if(err){
console.log("error on DBHelper GetAll");
console.log(err);
retVal = err;
done = true;
errObj = err;
}
if (result == null)
done = true;
else
retVal.push(result);
});
};
if(!(db.serverConfig.isConnected && db.serverConfig.isConnected()))// || !db.serverConfig.connected)
db.open(functionExec);
else
functionExec(undefined, db);
while(!done)
{
deasync.runLoopOnce();
setTimeout(function(){
if(!done){
console.log("FindAll callback was not called within specified time");
errObj = new Error("FindAll callback was not called within specified time");
done = true;
}
},5000);
}
if(errObj)
throw errObj;
return retVal;
};