Meteor 使用 namedContext 将 InvalidKeys 添加到 AutoForm 表单返回错误

Posted

技术标签:

【中文标题】Meteor 使用 namedContext 将 InvalidKeys 添加到 AutoForm 表单返回错误【英文标题】:Meteor using namedContext to addInvalidKeys to an AutoForm form returning an error 【发布时间】:2015-11-29 14:13:57 【问题描述】:

我有以下 SimpleSchema,我正在尝试添加自定义验证以验证是否输入重复的客户名称,但每当我尝试保存新客户时,我都会收到错误:

调用结果传递异常 'adminCheckNewCustomerName':类型错误:无法读取属性 'namedContext' 为 null

有人可以告诉我我做错了什么/在这里遗漏了以验证客户名称是否与重复记录有关吗?谢谢

schema.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

collections.js:

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

【问题讨论】:

能否请您提供一个存储库? 【参考方案1】:

检查collection2 code 以获取附加到集合的架构:

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

这个神秘的同音词_c2(编程中的两个难题之一......)来自from 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

【讨论】:

以上是关于Meteor 使用 namedContext 将 InvalidKeys 添加到 AutoForm 表单返回错误的主要内容,如果未能解决你的问题,请参考以下文章

将 GCM 与 Meteor 一起使用

Meteor 1.2 将@Index 传递给子模板

将 Summernote 编辑器与 Meteor 一起使用

尝试将 Twilio 与 Meteor 一起使用,ReferenceError: Twilio is not defined

Meteor - 如何在 MongoDB 集合中查找/获取对象并使用方法将其推送到另一个集合中?

将 Jquery-Raty 与 Meteor 一起使用