Meteor использует namedContext для добавленияInvalidKeys в форму AutoForm, возвращающую ошибку

У меня есть следующая SimpleSchema, где я пытаюсь добавить пользовательскую проверку для проверки на ввод повторяющегося имени клиента, но всякий раз, когда я пытаюсь сохранить нового клиента, я получаю сообщение об ошибке:

Исключение при доставке результата вызова «adminCheckNewCustomerName»: TypeError: невозможно прочитать свойство «namedContext» со значением null

может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно/отсутствует здесь, чтобы проверить имя клиента на наличие дубликатов записей? Спасибо

схема.js:

AdminSection.schemas.customer = new SimpleSchema({
    CustomerName: {
        type: String,
        label: "Customer Name",
        unique: true,
        custom: function() {
            if (Meteor.isClient && this.isSet) {
                Meteor.call("adminCheckNewCustomerName", this.value, function(error, result) {
                    if (result) {
                        Customer.simpleSchema().namedContext("newCustomerForm").addInvalidKeys([{
                            name: "CustomerName",
                            type: "notUnique"
                        }]);
                    }
                });
            }
        }
    }
});

UI.registerHelper('AdminSchemas', function() {
    return AdminSection.schemas;
});

form.html:

{{#autoForm id="newCustomerForm" schema=AdminSchemas.customer validation="submit" type="method" meteormethod="adminNewCustomer"}}
   {{>afQuickField name="CustomerName"}}
   <button type="submit" class="btn btn-primary">Save Customer</button>
{{/autoForm}}

коллекции.js:

this.Customer = new Mongo.Collection("customers");

person MChan    schedule 03.09.2015    source источник
comment
Не могли бы вы предоставить репозиторий?   -  person Matthias A. Eckhart    schedule 07.09.2015


Ответы (1)


Проверьте код collection2 для получения схемы, прикрепленной к коллекции. :

_.each([Mongo.Collection, LocalCollection], function (obj) {
  obj.prototype.simpleSchema = function () {
    var self = this;
    return self._c2 ? self._c2._simpleSchema : null;
  };
});

Этот загадочный омоним _c2 (одна из двух сложных вещей в программировании...) появляется от attachSchema:

self._c2 = self._c2 || {};
//After having merged the schema with the previous one if necessary
self._c2._simpleSchema = ss;

Это означает, что вы забыли attachSchema или возились со свойством вашей коллекции.

Решать:

Customer.attachSchema(AdminSchemas.customer);
//Also unless this collection stores only one customer its variable name should be plural
person Kyll    schedule 08.09.2015