我正在对Express.js中的端点发出POST请求,并且无法在响应中发送回正确的数据:
router.post("/", upload.single("avatar"), jsonParser, async (req, res) => {
const imageUrl = req.file.location;
const userId = req.file.originalname;
try {
const {
result: { ok }
} = await updateOne(
users,
{ _id: mongo.ObjectID(userId) },
{ $set: { avatarUrl: imageUrl } }
);
if (ok === 1) {
console.log("req.file.location", req.file.location);
res.json({ url: req.file.location });
}
} catch (error) {
console.warn("error updating avatarUrl", error);
}
});
req.file.location
正确注销,但是当我在客户端中注销响应时,我得到了"type": "default", "status": 200, "ok": true, "headers"...
为什么响应不只是给我指定的{url: req.file.location}
想回来吗?其他数据甚至来自哪里?
答案 0 :(得分:0)
事实证明,问题在于它正在兑现承诺。
我不确定在发送响应之前如何解决Promise,但是我已经能够通过以下方式在客户端上处理Promise:
response.json().then(data => {
// data.url
});