获取 API- res.json() returns 一个 [object][object]
Fetch API- res.json() returns an [object][object]
我已经尝试了很多我找到的解决方案,但都没有成功。我在验证后获取 user 对象-
Login.jsx-
const login = async () => {
const res = await fetch('http://localhost:8080/login', {
method: 'POST',
credentials: 'include',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
username: username,
password: password
})
});
const data = await res.json();
console.log('data: ' + data); // [object][object]
}
routes.js
const handleLoginPost = (req, res, next) => {
passport.authenticate('local', (err, user) => {
if(err) {
console.log(err);
res.status(404).json({err});
return;
}
res.status(200).json(user);
return;
})(req, res, next);
}
router.post('/login', handleLoginPost);
当我使用 res.text()
而不是 res.json()
时,它 returns 一个字符串对象 -
{"_id":"5f72cf2aa985f40488b2eb2b","username":"sapinder","email":"1@gmail.com","hash":"b$/7lYBHWP1Ed2VXXSIizyiOk.aujvbi2iRRrFxy6ufxu..S81oRl2u","__v":0}
这是一个字符串,因为 typeof data
returns 在这种情况下是字符串。我试过 JSON.parse(data)
但又试过了 returns [object][object]
.
提取 user 对象的正确方法是什么?
我不确定,但试试 .then(data => console.log('data: ' + data))
试试这个
const login = async () => {
const res = await fetch('http://localhost:8080/login', {
method: 'POST',
credentials: 'include',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
username: username,
password: password
})
}).then((response) => {
return response.json();
}).catch((err)=>{
console.log(err)
});
console.log("Res", res)
return res;
}
改变这个:
console.log('data: ' + data)
至此
console.log('data: ', data)
或对此:
console.log('data: ' + JSON.stringify(data)).
您的 console.log()
正在触发数据的默认字符串转换。在Javascript中,对象的默认字符串转换是[Object object]
,这通常是无用的。您的数据在那里,只是您的 console.log()
代码在尝试输出时出错。
我已经尝试了很多我找到的解决方案,但都没有成功。我在验证后获取 user 对象-
Login.jsx-
const login = async () => {
const res = await fetch('http://localhost:8080/login', {
method: 'POST',
credentials: 'include',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
username: username,
password: password
})
});
const data = await res.json();
console.log('data: ' + data); // [object][object]
}
routes.js
const handleLoginPost = (req, res, next) => {
passport.authenticate('local', (err, user) => {
if(err) {
console.log(err);
res.status(404).json({err});
return;
}
res.status(200).json(user);
return;
})(req, res, next);
}
router.post('/login', handleLoginPost);
当我使用 res.text()
而不是 res.json()
时,它 returns 一个字符串对象 -
{"_id":"5f72cf2aa985f40488b2eb2b","username":"sapinder","email":"1@gmail.com","hash":"b$/7lYBHWP1Ed2VXXSIizyiOk.aujvbi2iRRrFxy6ufxu..S81oRl2u","__v":0}
这是一个字符串,因为 typeof data
returns 在这种情况下是字符串。我试过 JSON.parse(data)
但又试过了 returns [object][object]
.
提取 user 对象的正确方法是什么?
我不确定,但试试 .then(data => console.log('data: ' + data))
试试这个
const login = async () => {
const res = await fetch('http://localhost:8080/login', {
method: 'POST',
credentials: 'include',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
username: username,
password: password
})
}).then((response) => {
return response.json();
}).catch((err)=>{
console.log(err)
});
console.log("Res", res)
return res;
}
改变这个:
console.log('data: ' + data)
至此
console.log('data: ', data)
或对此:
console.log('data: ' + JSON.stringify(data)).
您的 console.log()
正在触发数据的默认字符串转换。在Javascript中,对象的默认字符串转换是[Object object]
,这通常是无用的。您的数据在那里,只是您的 console.log()
代码在尝试输出时出错。