此结果有什么问题?我的res.send(dbResult)没有给我任何数据。它是空的。
/* GET users listing. */
router.get('/', function(req, res, next) {
async function getData(){
try{
var dbResult = await mongodb.findData("contacts","iyaiContacts");
console.log('before dbResult');
res.send (dbResult);
}catch(error){
console.log("error getting contacts...", error.message);
}
}
getData();
});
为清楚起见,附加代码。我有一个db.js文件,用于处理MongoDB连接和查询。这是“查找数据”功能。抱歉,直到人们提出问题,我才意识到自己一直在困惑。
const findData = (myColl, myDb) => {
try {
MongoClient.connect(
url,
function(err, client) {
client
.db(myDb)
.collection(myColl)
.find()
.sort({ nmFull: 1 })
.toArray(function(err, result) {
console.log("find() result...", result);
return result;
});
}
);
} catch (e) {
console.log(`findData() error message is...${e.message}`);
client.close(); // trying to close open db connection if it exist
throw e;
}
};
答案 0 :(得分:1)
您正在为应用程序编写后端服务,该服务需要从MongoDB中获取数据。问题在于您的处理功能是在同步庄园中进行的,而不是您需要异步处理。
// Quick fix for your code
const findData = (myColl, myDb) => {
return new Promise(function (resolve, reject) {
MongoClient.connect(url)
.then((client) => {
return client.db(myDb)
}).then((db) => {
return db.collection(myColl).find().sort({ nmFull: 1 })
.toArray((err, result) => { resolve(result); });
}).catch((err) => {
reject(err);
});
});
};
以下是在Node.js上连接MongoDB的一些最佳实践,