Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Fetch API-res.json()返回一个[object][object]_Javascript_Node.js_Json_Fetch_Passport.js - Fatal编程技术网

Javascript Fetch API-res.json()返回一个[object][object]

Javascript Fetch API-res.json()返回一个[object][object],javascript,node.js,json,fetch,passport.js,Javascript,Node.js,Json,Fetch,Passport.js,我已经尝试了很多我找到的解决方案,但是没有成功。我在验证后获取用户对象- Login.jsx- const login = async () => { const res = await fetch('http://localhost:8080/login', { method: 'POST', credentials: 'include', headers: { 'Accept': 'application/

我已经尝试了很多我找到的解决方案,但是没有成功。我在验证后获取用户对象-

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()
时,它返回一个字符串对象-

{"_id":"5f72cf2aa985f40488b2eb2b","username":"sapinder","email":"1@gmail.com","hash":"$2b$10$/7lYBHWP1Ed2VXXSIizyiOk.aujvbi2iRRrFxy6ufxu..S81oRl2u","__v":0}
这是一个字符串,因为在本例中,
typeof data
返回字符串。我尝试了
JSON.parse(data)
,但它再次返回
[object][object]


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

我不确定,但请尝试
。然后(data=>console.log('data:'+data))
试试这个方法

const login=async()=>{
const res=等待取数('http://localhost:8080/login', {
方法:“POST”,
凭据:“包括”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json;字符集=UTF-8”
},
正文:JSON.stringify({
用户名:用户名,
密码:密码
})
})。然后((响应)=>{
返回response.json();
}).catch((错误)=>{
console.log(错误)
});
console.log(“Res”,Res)
返回res;
}
更改此选项:

console.log('data: ' + data) 
对此

console.log('data: ',  data) 
或为此:

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

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

我在更改为
async/wait
res.status(200.json)(用户)之前做了这件事;请尝试在此处打印用户的值,也可以尝试res.send()并检查它返回的内容将更改
console.log('data:'+data)
到此
console.log('data:'+JSON.stringify(data))
或此:
console.log('data:'+JSON.stringify(data))
。您的
console.log()
正在触发
数据的默认字符串转换。在Javascript中,对象的默认字符串转换为
[object object]
,这是无用的。您的数据就在那里,只是您的
console.log()
代码在试图输出它时出错。@jfriend00 OMG!我真不敢相信我错过了那一部分!谢谢你的批改!现在可以了@我在下面贴了一个答案,里面有同样的信息。