Как я ловлю и вставляю предупреждения Meteor.Error из Meteor.Methods в базу данных на стороне клиента?
Я просто пишу панель уведомлений об ошибках в meteor, здесь я создаю mongodb на стороне клиента, но я не могу отправить сообщение Meteor.Error в эту базу данных на стороне клиента с помощью функции throwError, в настоящее время она отображается в окне предупреждения
коллекция /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 отображаются в окне предупреждения
проблема публикации / подписки, как думает (не написано для регистрации дБ)?
как я ловлю и вставляю предупреждения Meteor.Error из Meteor.Methods в базу данных на стороне клиента?
Есть ли другая функция, как throwError, чтобы перехватывать ошибки Meteor.Methods?
1 ответ
Как вы называете метод? Вам нужно сделать что-то вроде:
Meteor.call('signupSubmit', user, function(err) {
errorDB.insert(err);
});
Однако вы, похоже, внедряете нестандартную, небезопасную систему аутентификации. Вы не должны делать это; У Meteor есть отличный, безопасный встроенный пакет учетных записей. Все, что вам нужно сделать, это (на стороне клиента):
errors = new Meteor.Collection;
Accounts.createUser({
email: email,
password: password
}, function(err) {
errors.insert(err);
});
Accounts.createUser
Метод автоматически возвращает ошибку, если имя пользователя / адрес электронной почты дублируются.