【发布时间】:2019-11-11 16:36:36
【问题描述】:
这是一个 GraphQL 解析器。 问题在于使用 async/await 处理承诺。
我尝试过实现promise处理,但我无法正确设置它,我对promise处理没有太多经验,一些学习资料会很有帮助。
我的理解是脚本将在调用 await 的地方停止,并在 await 调用完成后继续。但它绕过了等待。 返回值后等待调用结束
allDocs: async (args, context) => context().then(async client => {
let db = client.db(dbName)
const id = args.identifier.trim()
let nameArr = []
return await db.collection("collection").find({
$or: [{
"a.iden": id
}, {
"b.iden": id
}]
}).toArray().then(async (arr) => {
let year
arr.map(async element => {
let pmcid = element.pmc_id.toUpperCase()
try {
year = await db.collection("Another_collection").findOne({"pmcid" : query})["year"]
} catch (e) {
year = null
}
element["publication_year"] = year
})
return await arr
}).then((arr)=>{
client.close()
return {
"documents": arr,
"count": arr.length,
"searchkey": id
}
})
}),
预期的返回值应该有“publication_year”作为某个年份,它现在给出null。
感谢您的帮助
【问题讨论】:
标签: javascript node.js mongodb aggregation-framework graphql