2017-01-24 3 views
0

私はfirebaseと私の反応するネイティブのアプリケーションの間の仲介者としてノードサーバーを使用しようとしています。私のディスパッチで私の応答を取得できないのはなぜですか?

誰かが私のフェッチで間違っていることを教えてもらえますか?私はresponse.json()console.log場合、私はちょうどこの取得

const router = (app) => { 
    app.get('/', (req, res) => { 

    firebase.database().ref('/social/posts') 
     .once('value', snapshot => res.json(snapshot.val())); 
    }); 
}; 

:私は、私が応答をCONSOLE.LOG場合

enter image description here

export const fetchPostsByNewest =() => { 
    return (dispatch) => { 
    fetch('http://localhost:3090/') 
    .then((response) => { 
     console.log(response.json()); 
     //dispatch({ type: NEW_POSTS_FETCH_SUCCESS, payload: response.json()}); 
    }); 
    }; 
}; 

は、これはノード/急行ルータです入手:

enter image description here

ヘッダーを削除するにはどうすればよいですか?私はconsole.log(response._bodyInit)をすれば、私はこれを取得:私は必要なもののように見える

enter image description here

を。

しかし、私はペイロードとしてそれを通過ならば、私はこのエラーを取得する:

export const fetchPostsByNewest =() => { 
    return (dispatch) => { 
    firebase.database().ref('/social/posts') 
     .once('value', snapshot => { 
     console.log(snapshot.val()) 
      dispatch({ type: NEW_POSTS_FETCH_SUCCESS, payload: snapshot.val() }); 
     }); 
    }; 
}; 

もし私がconsole.log(snapshot.val())

enter image description here

私の前のアクションの作成者は、直接このように、firebaseで働いていました。これはうまく動作しconsole.log(response._bodyInit)の最後にconsole.logと同じに見えます

enter image description here

:それから私はこれを得ました。

私はここで間違っていますか?私は本当に助けに感謝します。

ありがとうございました!

+0

あなたの最初のコードは、 '.then'で何も返さず、' response.json() 'がPromiseを返してくれるので、' undefined'に解決されます。 –

答えて

1

response.json()は、約束を返します。プロミスチェーンの

export const fetchPostsByNewest =() => { 
    return (dispatch) => { 
     fetch('http://localhost:3090/') 
     .then((response) => response.json()) 
     .then((json) => { 
      console.log(json); 
      dispatch({ type: NEW_POSTS_FETCH_SUCCESS, payload: json}); 
     }); 
    }; 
}; 

あなたは、JSON

にCONSOLE.LOGする必要がない場合
+0

ありがとう、ありがとう! – bloppit

1

あなたがresponse.json()を呼び出すときに新しい約束返した後、あなたがチェーンに別のthenを必要とするので、別の約束を返す、少し違う作品を取得する:あなたは別のリンクを必要とするので、

fetch('http://localhost:3090/') 
    .then(response => response.json()) 
    .then(aFunctionToDoSomethingWithTheJson); 
+0

ありがとうあなたはとても役に立ち、素早く対応してくれています:) – bloppit

関連する問題