Доступ к данным обещания из Node API внутри вызова выборки React - PullRequest
0 голосов
/ 19 февраля 2019

Я собираю приложение React, которое использует данные из API-интерфейса Node / Express REST, который в настоящее время находится на моем локальном компьютере.У меня есть простой 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]].

enter image description here

Я должен пропустить какой-то асинхронный шаг, но я не уверен, что.

Ответы [ 4 ]

0 голосов
/ 20 февраля 2019

Взгляните на 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));
});
0 голосов
/ 19 февраля 2019

Вы получаете эту ошибку, потому что response.json() возвращает обещание.

вам нужно сделать fetch('http://localhost:3000/users/sign_in', options) .then(response => response.json()) .then(res => console.log(res));

0 голосов
/ 20 февраля 2019

Вам нужно вернуть обещание из вызова выборки, иначе вам нужно выполнить его в то время, чтобы выполнить обещание 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.
        }
    );
0 голосов
/ 19 февраля 2019

Метод json возвращает обещание, которое вам также нужно дождаться.Так же:

fetch('http://localhost:3000/users/sign_in', options)
    .then(response => response.json())
    .then(obj => console.log(obj));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...