【发布时间】:2017-04-13 17:14:07
【问题描述】:
我在使用 throw new Meteor.Error 的服务器方法中抛出一个错误。
客户端似乎没有接它,回调的error参数始终是undefined,但在终端它throws出错并重新启动Meteor。
和条纹methods或
const Stripe = require('stripe');
const stripe = Stripe("sk_test_pO*******MUDXjlF8v");
仅适用于
if(Meteor.isServer)
如何从服务器端抛出错误并从客户端捕获?
方法代码:
export const addCCStudent = new ValidatedMethod({
name: 'addCCStudent',
validate: new SimpleSchema({
id: {
type: String
},
number: {
type: String
},
dateMM: {
type: String
},
dateYYYY: {
type: String
},
cvc: {
type: String
}
}).validator(),
run(p) {
try {
if (Meteor.isServer) {
const Fiber = require('fibers');
const Stripe = require('stripe');
const stripe = Stripe("*************");
stripe.tokens.create({
card: {
"number": p.number,
"exp_month": p.dateMM,
"exp_year": p.dateYYYY,
"cvc": p.cvc
}
}, function(err, token) {
console.log("tokenserr", err);
console.log("token", token);
if (!err) {
Fiber(function() {
// console.log("p", p)
var user = Meteor.users.findOne({
_id: p.id
});
//console.log("addCCStudentuser", user);
if (user) {
var cCArray = user.profile.UserCards;
if (cCArray) {
var exist = false;
for (var i = 0; i < cCArray.length; i++) {
if ((cCArray[i].number == p.number) && (cCArray[i].dateMM == p.dateMM) && (cCArray[i].dateYYYY == p.dateYYYY)) {
exist = true
}
}
if (exist) {
throw new Meteor.Error(204, "carte existe");
} else {
Meteor.users.update({
_id: p.id,
}, {
$push: {
'profile.UserCards': { number: p.number, dateMM: p.dateMM, dateYYYY: p.dateYYYY }
}
});
}
}
}
}).run();
} else {
// console.log("errerrerrerr", err.raw.message);
throw new Meteor.Error(204, err.raw.message);
}
});
}
} catch (error) {
console.log("error", error)
throw new Meteor.Error(203, error.reason);
}
},
});
【问题讨论】:
-
我可以看看你的完整代码吗?你怎么解决这个错误
-
如果你不发布你的代码就帮不上忙
标签: javascript meteor