我正在尝试在Meteor应用程序中使用SimpleSchemas。
我定义它们都没问题,可以看到验证规则有效,但是我刚刚添加了autoForm程序包,当我尝试使用已经定义的模式时,我似乎无法访问它们所在的对象我假设这是一个问题,因为我对导致变量全局变量等缺乏了解。
在我的schemas.js
目录中一个名为/collections
的文件中
var Schemas = {};
Schemas.AddressDetails = new SimpleSchema({
address_line_1: {
type: String,
}
...
});
Schemas.ContactDetails = new SimpleSchema({
address: {
type: Schemas.AddressDetails
}
});
...
但是,如果我随后尝试使用以下代码从位于
Schemas
内的文件中访问此/client/pages/<page>.js
对象,则当autoForm尝试访问架构时,由于找不到该架构,我会收到错误消息。Template.admOrganisationSetupStepOne.helpers({
schema: function() {
return Schemas.ContactDetails;
}
});
最佳答案
看来我做错了两件事。
我的Schemas.js文件需要从/lib
目录运行,以便可以在加载我的任何其他代码之前执行该文件。谢谢Bjørn
我的第二个错误是我用Schemas = {};
前缀定义了var
。通过调用var
,它限制了Schemas对象的使用,这意味着它不能在其他页面或脚本中使用。