2017-02-06 3 views
1

Я пытаюсь отправить два json, но он не работает. Он печатает TypeError: res.json is not a function, но я не понимаю, почему это происходит. Есть идеи? Спасибо !!TypeError: res.json не является функцией

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); 
     }) 
}); 
+1

@BelminBedak Почему это случилось? –

ответ

10

Поскольку вы переписав 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") 
+0

OH СПАСИБО! ПОМОГИТЕ – boombamboo

1

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

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

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

большое вам спасибо! – boombamboo

+0

Как большинство людей используют выразить свою ценность, указывая на это: http://expressjs.com/en/api.html#express.json –

Смежные вопросы