我正在组装一个React应用程序,该应用程序使用当前位于本地计算机上的Node / Express REST API中的数据。我有一个简单的res.json
返回Sequelize对象,并且正在通过我提供的服务来访问它。显然,最终我将把对象放到state
中,但是我目前很难访问这些值。
const options = {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: JSON.stringify({email: "matthewharp@gmail.com", password: "M1nerals"})
};
fetch('http://localhost:3000/users/sign_in', options)
.then(response => console.log(response.json()));
我正在控制台中获得结果,但结果卡在[[PromiseValue]]中。
我必须缺少某种异步步骤,但是我不确定是什么。
答案 0 :(得分:0)
json
方法返回一个Promise,您也需要等待。也是这样:
fetch('http://localhost:3000/users/sign_in', options)
.then(response => response.json())
.then(obj => console.log(obj));
答案 1 :(得分:0)
您遇到此错误是因为response.json()
返回了诺言。
您需要做
fetch('http://localhost:3000/users/sign_in', options)
.then(response => response.json())
.then(res => console.log(res));
答案 2 :(得分:0)
您需要从fetch调用中返回诺言,否则您需要在json诺言中对它进行操作。
const options = {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: JSON.stringify({email: "matthewharp@gmail.com", password: "M1nerals"})
};
return fetch('http://localhost:3000/users/sign_in', options)
.then(response => {
console.log(response.json())
return response.json()
}
);
或...
const options = {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: JSON.stringify({email: "matthewharp@gmail.com", password: "M1nerals"})
};
fetch('http://localhost:3000/users/sign_in', options)
.then(response => {
console.log(response.json())
response.json().then( result => {
// whatever you're doing with the data here.
}
);
答案 3 :(得分:0)
看看fetch
api:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
您需要链接一个单独的then
以便在准备好json数据后使用它,它将为您提供值。
('http://localhost:3000/users/sign_in', options)
.then(function(response) {
return response.json();
})
.then(function(myJson) {
console.log(JSON.stringify(myJson));
});