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);
})
});
res
関数の.then
のrp
変数を上書きしているため:
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")
_.json
_は関数ではありません。 1つにするライブラリを使用していない限り、JavaScriptはJSON
を使用します(2つのメソッド.parse()
および.stringify()
を使用します。そのうちの1つは上の行で使用します)。
_.json
_という名前でオブジェクトプロパティを設定しようとしている場合、次のようになります。
_res.json = {data: [res, dangerRate]};
_
新しいhttpClientライブラリでは、.json()メソッドを呼び出す必要はありません。jsonメソッドの代わりにこの単純なマップを使用するだけです。
.map(res => res );