javascript - 结合 await 和 Promise.all 在我的 node.js 微服务中不起作用
问题描述
我有一个非常复杂的 node.js 微服务,它也使用了 graphql,首先查询数据库,然后用返回值填充一个数组,然后在 await 和 Promise.all 调用中运行一个 graphql 突变。使用以下代码,我不断收到错误消息:“必须在异步函数中使用等待”-但是,我已经将所有内容都包装在了异步函数中!有人可以指出我做错了什么吗?(PS:可能还有其他我没有看到的错误,因为我无法克服第一个错误)
注意:这个问题不是重复的 - 另一个问题的函数名称有问题 - 在我的函数中,名称是 resolve() - 没有额外的函数名称。
const QryAllBooks = {
type: new GraphQLList(BookType),
args: {},
async resolve(){
return new Promise((resolve, reject) => {
let sql = singleLineString`
select distinct t.bookid,t.bookname,t.country
from books_tbl t
where t.ship_status = 'Not Shipped'
`;
pool.query(sql, (err, results) => {
if(err){
reject(err);
}
resolve(results);
const str = JSON.stringify(results);
const json = JSON.parse(str);
const promises = [];
for (let p = 0; p < results.length; p++){
const book_id = json[p].bookid;
const query = `mutation updateShipping
{updateShipping
(id: ${book_id}, input:{
status: "Shipped"
})
{ bookid
bookname }}`
promises.push( query );
}
//I need an await function so that apolloFetch
//goes in sequence of bookid, one after the other
await Promise.all(Object.values(input).map(async (promises, i) => {
apolloFetch({ promises[i]});
})
.catch(( e ) => {
errorLogger( 29, 'Error', e );
)};
});
});
}
};
module.exports = {
QryAllBooks,
BookType
};
解决方案
推荐阅读
- python - 没有 YMD 的 Python 日期时间
- javascript - 如何在javascript中将图像(svg)转换为渲染的svg?
- java - NFA/DFA 正则表达式之间的模式差异
- sql - 编写嵌套 SQL 查询
- gnuplot - 在gnuplot中读取赤经/赤纬坐标
- csv - 如何使用 Apache Calcite 对 CSV 文件执行 UPSERT?
- elasticsearch - Confluent 5.4.0 ElasticSearch Sink Connector 中没有连接器类型错误
- c# - 无法找到元数据 DLL VS 2019 Xamarin
- c - Gtk3 - 未解决的包含
- unity3d - 使用 MRTK 交互时设置螺旋运动