无法调用Meteor服务器端功能的回调函数

时间:2016-08-14 12:30:12

标签: javascript meteor request

我正在尝试在我的Meteor应用程序中启用支付网关。我使用request.post获取重定向网址,但我无法回拨。

该函数过早地返回一些数据,但它不会将request.post回调函数内的任何数据返回到我从中调用它的客户端中的回调函数。

**我也尝试了future,但它给了我future.result找不到错误

pay: function(id)
  {
    var pay_cart = scart.findOne({ _id: id } );
    var pay_user = Meteor.users.findOne({ _id: pay_cart.user_id } );
    var user_name = pay_user.profile.name;
    var user_email = pay_user.services[Object.keys(pay_user.services)[0]].email;
    var amount = pay_cart.totalPrice.toString();
    var purpose = 'Trn #'+id;
    purpose = purpose.toString();

    var headers = { 'X-Api-Key': 'key-value', 'X-Auth-Token': 'token-value'}
    var payload = {
      purpose: purpose,
      amount: amount,
      phone: '',
      buyer_name: user_name,
      redirect_url: 'http://www.example.com/redirect/'}


    request.post('https://www.instamojo.com/api/1.1/payment-requests/', {form: payload,  headers: headers}, function(error, response, body) {
      if(!error && response.statusCode == 201) {
        body = JSON.parse(body);
        console.log(body.longurl);
        //I'm trying to return this longurl
        return body.longurl;
      }
    });

}

1 个答案:

答案 0 :(得分:0)

问题是Meteor不会等到你的帖子请求完成。但Meteor确实支持新的await / async语法,并且有一个request-promise包,因此post请求返回一个promise,而不是传递一个回调。