[英]cannot catch Meteor.Error in client when error thrown from server side of meteor method
[英]how i catch and insert Meteor.Error alerts From Meteor.Methods in to a client side db?
我只是在流星上编写一个错误通知面板,在这里我创建了一个客户端mongodb,但是我不能通过throwError函数将Meteor.Error消息推送到该客户端db中,当前它显示在警报框中
collection / signup.js
signupDB = new Meteor.Collection('signup');
Meteor.methods({
signupSubmit : function(postData) {
var signinEmailExist = signinDB.findOne({
email : postData.email
});
if (postData.email && signinEmailExist)
throw new Meteor.Error(422, "exist in signinDB");
var signupEmailExist = signupDB.findOne({
email : postData.email
});
if (postData.email && signupEmailExist)
throw new Meteor.Error(422, "exist in signupDB"); //
var user = _.extend(_.pick(postData, 'email', 'password'), {
insert_time : new Date().getTime() });
var userId = signupDB.insert(user);
return userId;
}
});
客户端/错误/error.js
errorDB = new Meteor.Collection(null);
throwError = function(data) {
errorDB.insert({data: "in throwError", del: "N"})
}
errorDB.insert({data: "in signup", del: "N"})
代码在客户端文件夹内的任何位置都有效
这里throwError函数无法调用,但是signupSubmit方法错误显示在警报框中
的发布/订阅问题是不是像thinks一样(不是为注册数据库写的)?
我如何捕获Meteor.Error警报并将其从Meteor.Methods插入客户端数据库?
还有其他诸如throwError的功能来捕获Meteor.Methods错误吗?
您如何调用该方法? 您需要执行以下操作:
Meteor.call('signupSubmit', user, function(err) {
errorDB.insert(err);
});
但是,您似乎正在实现自定义,不安全的身份验证系统。 你不应该这样做 流星有一个伟大的,安全的内置帐户包。 您需要做的是(在客户端):
errors = new Meteor.Collection;
Accounts.createUser({
email: email,
password: password
}, function(err) {
errors.insert(err);
});
如果用户名/电子邮件重复,则Accounts.createUser
方法将自动返回错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.