NodeJS 返回 JSON,但未正确返回给客户端
NodeJS returning JSON, but not to client properly
所以,我有一个根据用户名和密码输入对用户进行授权的路由。第一次验证检查,我似乎无法开始工作:
exports.user_login = (req, res, next) => {
passport.authenticate('local', { session: false }, (err, user, info) => {
if (err || !user) {
res.status(500).json({
errorMsg: "User could not be authenticated."
});
}
如果我通过邮递员 ping 这个,我会得到适当的 JSON 响应,即 User could not be authenticated
.
但是,如果我从我的客户端代码使用这条路由,并尝试 console.log
它,或者其他任何东西(基本上,我想提取 errorMsg
是什么,记录它状态,并将其反映给用户),然后我只得到以下响应:
axios.post("api/auth/login/", user)
.then(res => {
console.log(res);
this.setState({
username: "",
password: ""
})
localStorage.setItem('bdgt', res.data.token);
})
.catch(err => {
console.log(err);
})
我查看了我以前完成的其他代码,通常这行得通,而且我通常可以访问消息并将其存储到状态:
this.setState({
error: err.errorMsg
})
想法?我错过了什么?
编辑...如果我让它做 res.json({ errorMsg: "message....."})
...这很好用,但是 returns 一个 200
显然不是我想要的。
因此,当 axios
收到状态大于或等于 400 的响应时,它会抛出异常。您可以像这样访问您的响应数据
axios.post("api/auth/login/", user)
.then(res => {
console.log(res);
this.setState({
username: "",
password: ""
})
localStorage.setItem('bdgt', res.data.token);
})
.catch(err => {
console.log(err.response.data); // this is your JSON
})
所以,我有一个根据用户名和密码输入对用户进行授权的路由。第一次验证检查,我似乎无法开始工作:
exports.user_login = (req, res, next) => {
passport.authenticate('local', { session: false }, (err, user, info) => {
if (err || !user) {
res.status(500).json({
errorMsg: "User could not be authenticated."
});
}
如果我通过邮递员 ping 这个,我会得到适当的 JSON 响应,即 User could not be authenticated
.
但是,如果我从我的客户端代码使用这条路由,并尝试 console.log
它,或者其他任何东西(基本上,我想提取 errorMsg
是什么,记录它状态,并将其反映给用户),然后我只得到以下响应:
axios.post("api/auth/login/", user)
.then(res => {
console.log(res);
this.setState({
username: "",
password: ""
})
localStorage.setItem('bdgt', res.data.token);
})
.catch(err => {
console.log(err);
})
我查看了我以前完成的其他代码,通常这行得通,而且我通常可以访问消息并将其存储到状态:
this.setState({
error: err.errorMsg
})
想法?我错过了什么?
编辑...如果我让它做 res.json({ errorMsg: "message....."})
...这很好用,但是 returns 一个 200
显然不是我想要的。
因此,当 axios
收到状态大于或等于 400 的响应时,它会抛出异常。您可以像这样访问您的响应数据
axios.post("api/auth/login/", user)
.then(res => {
console.log(res);
this.setState({
username: "",
password: ""
})
localStorage.setItem('bdgt', res.data.token);
})
.catch(err => {
console.log(err.response.data); // this is your JSON
})