J'essaye d'envoyer deux json mais ça ne marche pas. Il imprime TypeError: res.json is not a function
mais je ne comprends pas pourquoi cela se produit. Y a-t-il des idées? Je vous remercie !!
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);
})
});
Parce que vous écrasez votre variable res
dans le .then
de votre fonction 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
n'est pas une fonction. Sauf si vous utilisez une bibliothèque qui en fait une, JavaScript utilise JSON
(avec deux méthodes .parse()
et .stringify()
dont l'une est utilisée dans la ligne ci-dessus).
Si vous essayez de définir une propriété d'objet avec le nom .json
, alors ce serait:
res.json = {data: [res, dangerRate]};
Avec la nouvelle bibliothèque httpClient, vous n'avez pas besoin d'appeler la méthode .json (), utilisez simplement cette carte simple au lieu de la méthode json.
.map(res => res );