使用Meteor.wrapAsync在方法中包装回调

使用Meteor.wrapAsync在方法中包装回调,meteor,Meteor,此Meteor代码给出了错误: 错误:Meteor代码必须始终在光纤中运行。尝试使用Meteor.bindEnvironment包装传递给非Meteor库的回调 我尝试了Meteor.bindEnvironment,但没有结果,我想尝试Meteor.wrapAsync。我无法从照片上看出这一点。谁能帮我弄一下语法吗?thx Meteor.methods({ “createTransaction”: 功能(非客户、付款){ 让user=Meteor.user(); 网关、交易、销售( { arg_

此Meteor代码给出了错误:

错误:Meteor代码必须始终在光纤中运行。尝试使用Meteor.bindEnvironment包装传递给非Meteor库的回调

我尝试了Meteor.bindEnvironment,但没有结果,我想尝试Meteor.wrapAsync。我无法从照片上看出这一点。谁能帮我弄一下语法吗?thx

Meteor.methods({
“createTransaction”:
功能(非客户、付款){
让user=Meteor.user();
网关、交易、销售(
{
arg_对象
},
功能(错误,成功){
如果(!err){
//在这里做事
}
}
);
}
});

用Meteor.wrapAsync包装

Meteor.methods({
'createTransaction':
    function (nonceFromTheClient, Payment) {
      this.unblock();
      let user = Meteor.user();
      var sale = Meteor.wrapAsync(gateway.transaction.sale);
      var res = sale({arg_object});
      future.return(res);
      return future.wait();
    }
});
或者试着用纤维包起来

var Fiber = Npm.require('fibers');
Meteor.methods({
'createTransaction': function (nonceFromTheClient, Payment) {
    Fiber(function() {
      let user = Meteor.user();
      gateway.transaction.sale(
        {
          arg_object
        },
          function (err, success) {
            if (!err) {
              //do stuff here
            }
          }
      );
   }).run()
  }
});
更新:下面是我如何使用Async.runSync和Meteor.bindEnvironment处理条带

var stripe=require(“stripe”)(Meteor.settings.private.StripeKeys.secretKey);
流星法({
“stripeToken”:函数(){
这是unblock();
var future=新未来();
var encrypted=CryptoJS.AES.encrypt(Meteor.userId(),userIdEncryptionToken);
future.return(加密的.toString());
返回未来。等待();
},
“stripePayment”:函数(令牌){
var userId=Meteor.userId();
var totalPrice=0;
//从集合中计算总价
totalPrice=Math.ceil(totalPrice*100)/100;
userEmail=Meteor.users.findOne({
“_id”:用户id
}).电子邮件[0]。地址;
//创建费用:这将向用户的卡收费
var now=新日期();
runSync(函数(完成){
var charge=stripe.charges.create({
金额:Math.ceil(totalPrice*100),//金额单位为美分//将美元转换为美分
货币:“美元”,
资料来源:token,
接收电子邮件:userEmail,
说明:“充电”
},Meteor.bindEnvironment(函数(错误、充电){
如果(错误){
//使用开关盒处理不同错误的错误
完成();
}否则{
//处理res,更新顺序
}
}));
});//Async.runSync
},
});

在使用wrapAsync的第一个代码块中,
{arg_object}
是否也包含
gateway.transaction.sale
的回调?另外,如何处理
future
,因为它是未解析的变量?我也尝试了第二个代码块,但仍然得到相同的错误。
arg\u对象
不包含回调,因为它是异步包装的。处理方法返回的方式与使用回调的常规方法相同<代码>Meteor.call('createTransaction',nonce,payment,function(err,res){…})我将用如何处理条带支付更新答案