无法调用流星服务器端函数的回调函数

Not able to call the callback function of Meteor server side function

本文关键字:函数 回调 服务器端 流星 调用      更新时间:2023-09-26

我正在尝试在我的流星应用程序中获得支付网关。我正在使用request.post获得重定向url,但我无法回调。

该函数过早地返回一些数据,但它不会从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;
      }
    });

}

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