如何从Meteor方法中的远程API调用返回?

时间:2016-12-01 09:42:41

标签: javascript meteor

我从meteor方法调用了API。如何将数据返回给客户端?我没有成功,如下所示:

Meteor.methods({
    'geCoordinates': function(distance,location) {
        this.unblock();
        geocoder.geocode(location, function ( err, data ) {
            if (err) {
                console.log("See on error " + err)
             } else {
                lat = data.results[0].geometry.location.lat 
                lng = data.results[0].geometry.location.lng
            }
                url = 'http://localhost:3005/events?lat='+lat+'&lng='+lng+'&distance='+distance+'&sort=venue&accessToken=1048427405248222|u4dBjiRw-9gdsgml1puWYFGrEvw'
        })
    return url
    }
})

2 个答案:

答案 0 :(得分:1)

使用Promise可以通过一种很好的语法实现这一目标。似乎没有多少人意识到Meteor方法与Promise很好地配合。以下是如何做到这一点:

Meteor.methods({
  'geCoordinates': function(distance, location) {
    return geocoder.geocode(location).then((data) => {
      lat = data.results[0].geometry.location.lat;
      lng = data.results[0].geometry.location.lng;
      return 'http://localhost:3005/events?lat=' + lat + '&lng=' + lng + '&distance=' + distance + '&sort=venue&accessToken=1048427405248222|u4dBjiRw-9gdsgml1puWYFGrEvw';
    }).catch((err) => {
      console.log("See on error " + err);
      throw err;
    });
  }
})

答案 1 :(得分:-1)

您可以使用Npm future同步返回数据,使用Npm,您的代码将看起来像这样

在服务器端

PWD="pwd"

})

注意:这将同步返回数据。