提取API- res.json返回[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,next);
}

router.post('/login',handleLoginPost);

当我使用res.text()代替res.json()时,它将返回一个字符串对象-

{"_id":"5f72cf2aa985f40488b2eb2b","username":"sapinder","email":"1@gmail.com","hash":"$2b$10$/7lYBHWP1Ed2VXXSIizyiOk.aujvbi2iRRrFxy6ufxu..S81oRl2u","__v":0}

这是一个字符串,因为在这种情况下typeof data返回String。我尝试了JSON.parse(data),但再次返回了[object][object]

提取 user 对象的正确方法是什么?

解决方法

更改此:

console.log('data: ' + data) 

对此

console.log('data: ',data) 

或对此:

console.log('data: ' + JSON.stringify(data)). 

您的console.log()触发了默认的数据字符串转换。在Javascript中,对象的默认字符串转换为[Object object],通常是无用的。您的数据在那里,只是您的console.log()代码在尝试输出时出错。

,

我不确定,但请尝试使用.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;
}