2017-02-06 4 views
1

Ich versuche, zwei JSON zu senden, aber es funktioniert nicht. Es druckt TypeError: res.json is not a function, aber ich verstehe nicht, warum es passiert. Gibt es irgendwelche Ideen? Vielen Dank !!TypeError: res.json ist keine Funktion

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 würde Warum das denn? –

Antwort

10

Weil Sie Ihre res Variable in der .then Ihrer rp Funktion zu überschreiben:

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 DANKE! ES HILFT – boombamboo

1

.json keine Funktion ist. Sofern Sie keine Bibliothek verwenden, die eine solche erstellt, verwendet JavaScript JSON (mit zwei Methoden .parse() und .stringify(), von denen Sie eine in der obigen Zeile verwenden).

Wenn Sie versuchen, mit dem Namen .json eine Objekteigenschaft zu setzen dann wäre es:

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

vielen Dank! – boombamboo

+0

Wie die meisten Leute sagen, lohnt es sich, dies zu erwähnen: http://expressjs.com/en/api.html#express.json –

Verwandte Themen