【发布时间】:2016-08-26 19:01:43
【问题描述】:
我试图在执行查询后获取结果并将其存储在一个名为“模型”的变量中。
db.collection.findOne({object},function(err,docs){
model["output"]= docs;
})
以上代码将模型[“输出”] 存储为“未定义”。我如何获得这个值?
对不起,没有足够的代码。
所以有两个文件。
文件1
dbStmtModel.insertRecords(collectionName, record).then(
function (results) {
console.log("results",results);
result = results;
}, function (err){
return err;
});
model[statement.output] = result;
文件2
函数 insertRecords(operand1,operand2){
var deferred = q.defer();
db.collection(operand1).update(operand2,operand2,{upsert:true},function (err,docs) {
if(err) {
deferred.reject(err);
}
else {
deferred.resolve(docs);
}
});
return deferred.promise
}
所以尝试使用 promises,尝试使用 async。似乎仍然没有得到模型存储查询结果的输出。此外,没有错误,因为回调正确返回并打印结果。我不确定我是否正确使用了 Promise,尽管控制台语句似乎可以正确打印结果。另外我使用 mongojs 而不是 mongoose 而不是 mongodb(因为这里的架构是动态的),不知道这是否会改变任何事情。
【问题讨论】:
-
1) 可能有错误,您应该检查
err参数。 2) 确保您了解异步性。
标签: java node.js mongodb mongojs database