我正在尝试发送两个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);
})
});
答案 0 :(得分:17)
因为您在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")
答案 1 :(得分:2)
.json
不是一个功能。除非您使用的是一个库,否则JavaScript会使用JSON
(使用两个方法.parse()
和.stringify()
,其中一个方法在上面一行中使用。)
如果您尝试按名称.json
设置对象属性,那么它将是:
res.json = {data: [res, dangerRate]};
答案 2 :(得分:0)
有了新的httpClient库,您不需要调用.json()方法,只需使用此简单映射即可代替json方法。
.map(res => res );
答案 3 :(得分:0)
在您的情况下,您在嵌套中编写 res ,但如果您编写 response(res,req) ,也会得到相同的错误。
所以一定要检查顺序