Код во втором файле зависит от первого, поэтому я хочу, чтобы код первого файла выполнялся первым, а когда код первого файла завершает свое выполнение, должен выполняться код во втором файле. Код в первом файле в основном сохраняет изображение в облачном хранилище Google, а затем возвращает URL-адрес этого изображения, а второй файл обновляет схему публикации в MongoDB и помещает строку URL-адреса в массив изображений. Поскольку код в обоих файлах выполняется бок о бок, а код во вторых файлах не ждет, пока первый выполнит схему сообщения, обновляется даже до того, как первый код вернет все строковые URL-адреса, что является проблемой. Я хочу сначала получить все URL-адреса строки, а затем обновить схему публикации.
Итак, в первом файле у меня есть
function sendUploadsToGCS(req, res, next){
if(!req.files){
return next();
}
req.files.map((image, index) => {
const gcsname = uuid() + image.originalname;
const file = craigFilesBucket.file(gcsname);
const stream = file.createWriteStream({
metadata: {
contentType: image.mimetype,
}
});
stream.on('error', err =>{
req.files[index].cloudStorageError = err;
next(err);
});
stream.on('finish', async () => {
req.files[index].cloudStorageObject = gcsname;
await file.makePublic();
req.files[index].cloudStoragePublicUrl = getPublicUrl(gcsname);
console.log(req.files[index].cloudStoragePublicUrl);
next();
});
stream.end(image.buffer);
})
}
Во втором файле У меня
const addImagestoPost = async (req, res, next) =>{
const errors = validationResult(req);
if(!errors.isEmpty()){
return next(new HttpError('Invalid inputs passed, please check your data.', 422))
}
const postId = req.params.pid;
let post;
try{
post = await Post.findById(postId);
}catch(err){
const error = new HttpError(
'Something went wrong could not update post',
500
);
return next(error);
}
// if(!req.files[0] || !req.files[0].cloudStoragePublicUrl){
// return next(new HttpError('cloudStoragePublicUrl err.', 422))
// }
//images: req.files.cloudStoragePublicUrl,
console.log('HEllo World');
try{
await post.save();
}catch(err){
const error = new HttpError(
'Something went wrong, could not update post', 500
)
}
res.status(200).json({post: post.toObject({getters: true})})
}