Не видя вашего полного кода, я предполагаю, что ваш Image
класс - это класс, расширяющий mongoose, который имеет какой-то метод сохранения?
Если это так, ваш save()
метод, вероятно, асинхронный. Это означает, что вам нужно дождаться разрешения метода, прежде чем продолжить / вернуться.
router.post ('/upload',auth, upload.array('upload'), async (req:Request, res:Response) => {
const promises = req.files.map(file => {
const image = new Image(file.buffer) // create the new Image
return image.save // return the promise without calling it yet
})
const images = await Promise.all(promises) // calls all the porimises returned in `promises`
// we let the Promise.all resolve before calling res.send()
res.send(images)
},(error:Error, req:Request, res:Response, next:NextFunction)=>{
res.status(400).send({error:error.message})
})
Как вы можете видеть здесь, мы создаем массив обещаний с именем promises
.
Затем мы вызываем все это с помощью Promise.all(promises)
, и как только они будут разрешены, мы можем затем вернуться с помощью нашего res.send
метода
Я не тестировал этот код, и мне пришлось немного догадаться, как выглядит остальная часть вашей базы кода, так что, надеюсь, это сработает.