Вы должны просто подождать, пока все обещания не разрешатся, и только затем приступить к созданию нового документа.
async function addPost(_, {postInput: {title, description, pictures, panoramas, price, location}}, ctx) {
const anon = checkAuth(ctx);
let pans = [];
let pics = [];
pictures.map(async (el) => {
pics.push(
new Promise(async (resolve, reject) => {
const {createReadStream, filename} = await el;
await new Promise(res =>
createReadStream()
.pipe(createWriteStream(path.join("static/images", filename)))
.on("close", res)
);
resolve(`static/images/, ${filename}`);
})
)
});
await Promise.all(pics);
panoramas.map(async (el) => {
pans.push(
new Promise(async (resolve, reject) => {
const {createReadStream, filename} = await el;
await new Promise(res =>
createReadStream()
.pipe(createWriteStream(path.join("static/images", filename)))
.on("close", res)
);
resolve(path.join("static/images", filename));
}));
});
await Promise.all(pans);
const newPost = new Post({
title,
description,
price,
pictures: pics,
panoramas: pans,
createdAt: new Date().toISOString(),
userId: anon.id,
location,
});
const res = await newPost.save();
console.log(res)
return true;
}
Это быстрый пример, я рекомендую немного его исправить и добавить обработку ошибок для что-то вроде этого.