我想通过Mongodb查询从服务器端向客户端发送json数据。我已经处理了我对数据库和连接内容的查询。
var key = app.pages.ProjectInfoPage.properties.ProjectKey;
…
我使用此代码段成功发送测试json数据。
function mongoDbHandleLoad()
{
MongoClient.connect(MongoDBURL, function(err, db)
{
/*
db.createCollection('user', {strict:true}, function(err, collection) {
if(err)
return console.dir(err);
});
*/
db.collection('user', function(err, collection) {
if(!err)
{
collection.find().toArray(function(err, docs) {
if(!err)
{
var intCount = docs.length;
var responseBody;
if(intCount > 0)
{
console.log("responseBody in mongodb handle", JSON.stringify(docs[docs.length-1]));
return JSON.stringify(docs[docs.length-1]);
}
}
});
}
});
});
/*
if(docs != null)
{
console.log("docs", docs);
return resParam.json(docs); //return the first document found
}
*/
}
当我想发送数据" JSON.stringify(docs [docs.length-1])"在mongoDbHandleLoad()函数里面,即使我用回调改变了函数,我也做不好。我从mongoDbHandleLoad函数中获取未定义的值。如何修改代码以获取" JSON.stringify(docs [docs.length-1])"的正确值。
提前致谢,
答案 0 :(得分:1)
mongoDbHandleLoad()
包含异步代码(对MongoDB的调用),因此它会在代码到达行undefined
之前返回return JSON.stringify(docs[docs.length-1]);
。
您应该使用回调或Promises
来取回结果。
我想首先你应该研究一下Javascript中的异步代码,特别是Node.js的约定。