web-dev-qa-db-ja.com

TypeError:res.jsonは関数ではありません

2つのjsonを送信しようとしていますが、動作しません。 TypeError: res.json is not a functionしかし、なぜそれが起こるのか分かりません。アイデアはありますか?ありがとうございました !!

app.post('/danger', function response(req, res) {
    let placeId = req.body.data;
    let option = {
      uri: 'https://maps.googleapis.com/maps/api/directions/json?',
      qs: {
        Origin:`place_id:${placeId[0]}`, destination: `place_id:${placeId[1]}`,
        language: 'en', mode: 'walking', alternatives: true, key: APIKey
      }
    };
    rp(option)
      .then(function(res) {
        let dangerRate = dangerTest(JSON.parse(res), riskGrid);
        res.json({ data: [res, dangerRate]});
      })
      .catch(function(err) {
        console.error("Failed to get JSON from Google API", err);
      })
});
6
boombamboo

res関数の.thenrp変数を上書きしているため:

app.post('/danger', function response(req, res) { //see, "res" here was being overwritten
   ..
   ..
   rp(option).then(function(response) { //change the variable name of "res" to "response" (or "turtles", who cares, just dont overwrite your up most "res")
19
tymeJV

_.json_は関数ではありません。 1つにするライブラリを使用していない限り、JavaScriptはJSONを使用します(2つのメソッド.parse()および.stringify()を使用します。そのうちの1つは上の行で使用します)。

_.json_という名前でオブジェクトプロパティを設定しようとしている場合、次のようになります。

_res.json = {data: [res, dangerRate]};
_
3
D Lowther

新しいhttpClientライブラリでは、.json()メソッドを呼び出す必要はありません。jsonメソッドの代わりにこの単純なマップを使用するだけです。

.map(res => res );
0