Как я ловлю и вставляю предупреждения 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 Метод автоматически возвращает ошибку, если имя пользователя / адрес электронной почты дублируются.

Другие вопросы по тегам