猿问

流星:在服务器上正确使用Meteor.wrapAsync

背景


我正在尝试将条纹付款集成到我的网站中。我需要使用我的专用条纹密钥创建一个条纹用户。我将此密钥存储在服务器上,并调用服务器方法来创建用户。也许还有另一种方法可以做到这一点?这是条纹API(为方便起见,在下面复制):https : //stripe.com/docs/api/node#create_customer


//stripe api call

var Stripe = StripeAPI('my_secret_key');


Stripe.customers.create({

  description: 'Customer for test@example.com',

  card: "foobar" // obtained with Stripe.js

}, function(err, customer) {

  // asynchronously called

});

我的尝试和结果


我一直在使用相同的客户端代码和不同的服务器代码。所有尝试都会立即在客户端的console.log(...)上给出undefined,但在服务器的console.log(...)上给出正确的响应:


//client

Meteor.call('stripeCreateUser', options, function(err, result) {

  console.log(err, result);

});


//server attempt 1

var Stripe = StripeAPI('my_secret_key');


Meteor.methods({

    stripeCreateUser: function(options) {  

        return Meteor.wrapAsync(Stripe.customers.create({

            description: 'Woot! A new customer!',

            card: options.ccToken,

            plan: options.pricingPlan

        }, function (err, res) {

            console.log(res, err);

            return (res || err);

        }));

    }

});


//server attempt 2

var Stripe = StripeAPI('my_secret_key');


Meteor.methods({

    stripeCreateUser: function(options) {  

        return Meteor.wrapAsync(Stripe.customers.create({

            description: 'Woot! A new customer!',

            card: options.ccToken,

            plan: options.pricingPlan

        }));

    }

});

我也尝试了没有Meteor.wrapAsync的情况。


编辑-我也在使用这个包:https : //atmospherejs.com/mrgalaxy/stripe


HUX布斯
浏览 580回答 3
3回答

慕桂英3389331

另一个选择是此程序包可以实现类似的目标。meteor add meteorhacks:async从README包中:Async.wrap(函数)包装一个异步函数,并允许它在Meteor内部运行而无需回调。//declare a simple async functionfunction delayedMessge(delay, message, callback) {  setTimeout(function() {    callback(null, message);  }, delay);}//wrappingvar wrappedDelayedMessage = Async.wrap(delayedMessge);//usageMeteor.methods({  'delayedEcho': function(message) {    var response = wrappedDelayedMessage(500, message);    return response;  }});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答