【发布时间】:2020-03-08 05:25:17
【问题描述】:
所以,在我的 nodeJS 项目中,我有这部分代码,不等待等待调用
Controller.js
exports.getList = async function(request, response) {
try {
const result = await useCase.getList()
if (result == undefined) {
utils.unavailable(response)
}
else if (result == null || result.length == 0) {
utils.respond(response, 404, errCodes.NOT_FOUND)
}
else utils.respond(response, 200, result)
}
catch(e) {
utils.unavailable(response)
}}
这是控制器上的函数,它调用useCase的响应
用例.js
exports.getList = async function() {
return await new Promise(function(resolve) {
resolve(repository.getList())
})
这也调用了存储库
Repository.js
exports.getList = async function() {
MongoClient.connect(Constants.DB_URL, function(err, db) {
if (err) {
console.log(err)
return undefined
}
const dbo = db.db(Constants.DB_NAME)
dbo.collection(Constants.DB_FEATURE1_COLLECTION).find({}).toArray(function(err, result) {
if (err) {
console.log(err)
return undefined
}
db.close()
return result
})
});
所以,在控制器上,结果总是未定义的,因为结果还没有被初始化,当它实际上应该等待对 UseCase 的 Promise 的响应时。那我做错了什么?
【问题讨论】:
-
你有两个
return undefned。也许承诺正在解决,解决的值是undefined,因为这就是返回的内容? -
您在控制台中看到任何错误日志吗?
-
不,对两者来说,控制台上都没有错误,并且存储库实际上正在正确返回列表,我进行了调试,它在返回结果之前继续执行其余的函数
标签: javascript node.js