Я пытаюсь использовать Promise.all в моем микросервисе node.js.Назначение Promise.all - пройти через все элементы в массиве (запросов) и через apolloFetch вызвать другой микросервис, который затем выполняет эти запросы в базе данных и затем возвращает обратно успех или ошибку.Я получаю сообщение об ошибке «Обернутое обещание не повторяется» - я проверил несколько сообщений на SO, в которых есть похожие ошибки, но во всех этих случаях передается 2 аргумента, тогда как я передаю только один - за исключением того, что яиспользуя apolloFetch для соединения с ДРУГИМ MICROSERVICE, который выполняет каждый из этих запросов (в массиве), а затем выполняет некоторые действия с базой данных.
Может кто-нибудь выяснить, что я здесь делаю не так:
const QryAllBooks = {
type: new GraphQLList(BookType),
args: {},
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 previous apolloFetch
//goes in sequence of bookid, one after the other
Promise.all( promises.map(p=>apolloFetch({p})) ).then((result) =>
{
resolve();
console.log("success!");
})
.catch(( e ) => {
FunctionLogError( 29, 'Error', e );
)};
});
});
}
};
module.exports = {
QryAllBooks,
BookType
};