好吧可能是一个奇怪的问题,但通常是你有这样的代码
app.get('/', function(request, response) {
response.render('pages/index');
});
您使用mongoDB并获取数据库中的相关数据以返回,但如果我想为其他服务进行数据api调用该怎么办?
我正在使用请求库(https://github.com/request/request#streaming)
到目前为止,我的代码看起来像这样
request = require('request');
....
....
app.get( '/examplePage', function( request, response ) {
request("http://www.google.com", function(error, response, body) {
console.log(body);
});
});
但我得到一个" TypeError:对象不是一个函数"这很奇怪,因为我只是在github页面上复制并粘贴了作为示例提供的代码。所以我只是将请求更改为request.get(因为默认是GET但我只是明确使用了get方法)但我没有得到回复或者Google HTML没有返回。
所以基本上我甚至不确定我是否允许在app.get方法中使用请求方法调用,我认为可能是问题?
答案 0 :(得分:2)
request
不是您认为app.get
函数中的内容。你应该改变它:
request = require('request');
....
....
app.get( '/examplePage', function( req, res) {
request("http://www.google.com", function(error, r, body) {
console.log(body);
});
});
这样您就不会覆盖之前设置的任何变量。当您尝试使用request
模块时,它会引用它在app.get
调用中收到的请求参数,该调用不是函数。
答案 1 :(得分:2)
您的代码中有两个名为request
的对象,请求模块和来自http调用中路由的请求,您可以更新代码类似于:
var request = require('request')
...
app.get('/example', function (req, res) {
request("http://googl.com", function (err, response, body) {
console.log(body)
})
})
同时考虑到res
和response
对象不能具有相同的名称,如果这样做,后者将被考虑在内,具体取决于您使用它的上下文。