it-swarm.com.ru

Ошибка типа: res.json не является функцией

Я пытаюсь отправить два 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);
      })
});
5
boombamboo

Поскольку вы перезаписываете свою переменную 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")
15
tymeJV

.json не является функцией. Если вы не используете библиотеку, которая делает ее единой, JavaScript использует JSON (с двумя методами .parse() и .stringify(), один из которых вы используете в строке выше).

Если вы пытаетесь установить свойство объекта с именем .json, тогда это будет:

res.json = {data: [res, dangerRate]};
1
D Lowther

С новой библиотекой httpClient вам не нужно вызывать метод .json (), просто используйте эту простую карту вместо метода json. 

.map(res => res );
0
shivam srivastava