在函数

时间:2015-10-03 18:28:56

标签: node.js express

我在使用请求参数尝试使用instagram节点包获取数据时遇到错误。

在没有参数但硬编码值的情况下进行调用没有任何错误,并且给出了正确的结果。

当我使用参数时,如下所示,我收到以下错误:

{ [Error: Wrong params "lat" & "lng"] retry: [Function] }

这是我的代码:

//http://localhost:8080/photos/2000/52.3677985/4.8852246
app.get('/photos/:dist/:longitude/:latitude', function(req,res) {

var dist = req.params.dist;
var longitude = req.params.longitude;
var latitude = req.params.latitude;

console.log(dist + " " + longitude + " " + latitude);

ig.media_search(longitude, latitude, {distance: dist},
  function (err, medias, remaining, limit) {

    if (err) {
        console.log(err);
    } else {

        res.render('pages/index', {grams: medias});

    }

});

记录参数会为我提供所需的值,但在进行ig.media_search()调用时似乎没有定义它们。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

我所看到的第一件事就是你在向后经纬度和经度发送。签名是:

media_search = function(lat, lng, options, cb) {}

其次,这是从instagram节点抛出错误的行:

if(typeof lat !== 'number' || typeof lng !== 'number') {
    return handle_error(new Error('Wrong params "lat" & "lng"'), cb, retry);
}

我猜你是否正在发送具有所需数字的字符串值,因为它们是从url字符串中解析出来的。如果您尝试这样调用它,您可能会看到更好的结果:

//http://localhost:8080/photos/2000/52.3677985/4.8852246
app.get('/photos/:dist/:longitude/:latitude', function(req,res) {

// Cast as numbers to send into instagram.
var dist = Number(req.params.dist);
var longitude = Number(req.params.longitude);
var latitude = Number(req.params.latitude);

console.log(dist + " " + longitude + " " + latitude);

ig.media_search(latitude, longitude, {distance: dist},
  function (err, medias, remaining, limit) {

    if (err) {
        console.log(err);
    } else {

        res.render('pages/index', {grams: medias});

    }

});

顺便说一下,我之前从未使用过这个包。如果您从npm page for this package开始,则可以找到github repo的链接。如果您查看他们的package.json,您可以找到一个主要值,该值将引导您进入包裹的入口点。在该文件(lib / instagram.js)中,您可以按Ctrl + F查看media_search and find the function in you're calling。只是想你可能想知道如何通过调试这样的东西。 :)