我的后端路由存在问题,其中res.status().send()
仅向客户端发送状态代码,但不会向客户端发送位于send()
内部的对象。
这是我的代码(删除了所有代码,但为了简洁起见):
exports.user_signup = (req, res) => {
const { body } = req;
const { companyName, password, email } = body;
User.find({ email: email }, (err, previousUsers) => {
if (err) {
return res.status(400).send({
message: "There was an issue signing up."
});
} else if (previousUsers.length > 0) {
return res.status(403).send({
message: "Records show this email is linked to another account."
});
}
}
当我从客户端创建fetch request
时,响应仅从服务器返回status code
,但是服务器上send()
方法中的对象中没有响应。只是吐口水,我就扔了res.status(200).json(object)
,以json
的形式发送对象毫无用处。
这是我从客户端获取的请求:
fetch("http://localhost:3000/users/accounts/", {
method: "post",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify(userData)
}).then(response => console.log(response));
}
为了显示我得到的响应,我特意将一些表单数据从客户端发布到了会引发403错误的路由,这就是我在浏览器控制台中得到的响应:
Response {type: "basic", url: "http://localhost:3000/users/accounts/", redirected: false, status: 403, ok: false, …}
因此,我能够成功地将状态从路由发送回客户端,但是我一生都无法弄清楚为什么send()
不随同发送对象。
答案 0 :(得分:2)
从body
返回的响应的fetch()
是ReadableStream
。您需要对其进行处理以使其变为可用的东西。通常,您将调用response.json()
将其解析为JSON对象:
fetch("http://localhost:3000/users/accounts/", {
method: "post",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify(userData)
})
.then(response => response.json())
.then(response => console.log(response));
}