У меня есть обещание запроса, которое используется для вызова другого API с небольшими нагрузками, вот мое обещание запроса
вот мой контейнер
if (!req.uploadedFile2) {
opt2 = {
method: 'POST',
body: {
token: req.body.token,
name: req.body.name,
id_type: req.body.id_type,
id_no: req.body.id_no,
mobile_phone: req.body.phone,
email: req.body.email,
address: req.body.address,
postal_code: req.body.postal_code,
dob: req.body.dob,
product_code: req.body.product_code,
billing_phone: req.body.billing_phone,
callback_url: 'purchase',
},
formData: {
images: fs.createReadStream(req.uploadPic),
},
uri: `${process.env.Heeey}purchase/test/test_more`,
json: true,
};
}
const obj = {
name: req.body.name,
id_no: req.body.id_no,
id_type: req.body.id_type,
mobile_phone: req.body.phone,
birth_date: moment(req.body.dob, 'DD-MM-YYYY').format('YYYY/MM/DD'),
postal_code: req.body.postal_code,
};
и здесь я отправлю свое обещание запроса после создания dbUserContainer
return dbUserContainer
.create(obj)
.then(() => rp(opt2)
.then((results) => {
setContent(200, results.result);
return res.status(200).json(getContentSuccess());
}).catch((error) => {
setContent(400, error);
return res.status(400).json(getContentFailOutside(error));
}))
.catch((error) => {
setContent(400, error);
return res.status(400).json(getContentFailOutside(error));
});
когда я выполняю этот код через почтальона, я всегда получаю это сообщение
{
"code": "ERR_STREAM_WRITE_AFTER_END"
}
после исследования я попытался использовать тайм-аут, чтобы дать время fs.createReadStream для чтения и транспортировать вот то, что я пробовал до сих пор
return dbUserContainer
.create(obj)
.then(() => {
const dataRP = () => rp(opt2)
.then((results) => {
setContent(200, results.result);
return res.status(200).json(getContentSuccess());
}).catch((error) => {
setContent(400, error);
return res.status(400).json(getContentFailOutside(error));
});
setTimeout(dataRP, 2000);
})
.catch((error) => {
setContent(400, error);
return res.status(400).json(getContentFailOutside(error));
});
но я всегда получаю, но, к сожалению, я получаю то же сообщение об ошибке в почтальоне с указанием ERR_STREAM_WRITE_AFTER_END t та же ошибка