我一直在使用 Meteor 和 stripe 包来尝试吸引客户。所以首先我有我的客户端代码,它调用服务器上的一个方法,所以当点击我在 client.js 中:
Meteor.call('usersignup', function (error, result) {
console.log (result);
});
所以这会调用 server.js 上的方法:
var Future = Npm.require('fibers/future');
var stripe = StripeAPI('my key'); // secret stripe API key
Meteor.methods({
usersignup: function(cusEmail){
var fut = new Future();
stripe.customers.create(
{ email: cusEmail },
function(err, customer) {
if (err) {
console.log(err);
fut.ret;
}
fut.ret(customer);
}
);
return fut.wait();
},
userfail: function(cusid){
var fut = new Future();
stripe.customers.retrieve(cusid, function(err, result) {
if(err){
console.log(err);
fut.ret;
}
fut.ret(err, result);
});
return fut.wait();
}
});
现在,当我登录到 stripe.com 仪表板时,这可以工作并创建一个客户,但我正在尝试将响应至少返回给客户,至少现在是客户 ID,并在控制台中打印它。这是我似乎无法让它工作的地方。当我执行 console.log(result) 时,它会记录未定义。有任何想法吗?
编辑:所以我现在将光纤和条带键作为全局变量并且没有收到错误,但返回似乎没有返回任何值。所以在客户端我有:
'click #signupsubmit': function (event) {
console.log("hello");
var whatis = getVal(); // function gets value of forms and returns object
var testid;
var cusid = Meteor.call('usersignup', whatis.email, function (error, result) {
if (error) {
console.log(err.message);
return;
}
console.log(result);
console.log("meteor call");
testid = result;
return (result);
});
console.log("outside call");
console.log(testid);
console.log(cusid);
},
});
所以我一直在运行一些console.log 测试,它似乎执行了meteor.call 并继续下线。testid 和 cusid 的 Console.log 都返回未定义,但几秒钟后,我收到了 result 的 console.log 和来自 meteor.call 内部的字符串“meteor call”。有没有办法等待流星调用完成然后运行我的点击功能中的其余部分?所以控制台输出将如下所示:
- “你好”
- “外线电话”
- 测试ID未定义
- cusid 未定义
- “流星呼唤”
- “结果”