【发布时间】:2019-04-08 01:38:51
【问题描述】:
我有一个名为 extrafunctions.js 的文件,它导出要由 app.js 运行的函数。其中一个函数包括 MongoDB 查询 findOne。问题是该函数在查询完成之前返回一个值,因此 app.js 没有获得所需的数据,而是“未定义”。
我已经在一定程度上尝试过 Promise,但没有任何效果。
app.js:
const extraFunctions = require("./extraFunctions");
app.get('/api/login', (req, res) => {
res.end(extraFunctions.login());
});
extraFunctions.js:
function login ()
{
client.connect(err => {
var collection = client.db("site").collection("test");
collection.findOne({}, (err, result) => {
if (err) throw err;
console.log(result);
return result;
});
client.close();
});
}
module.exports.login = login;
固定版本
与接受的评论相同,但必须将 res(result) 更改为 res(JSON.stringify(result))
【问题讨论】:
标签: javascript node.js mongodb asynchronous