我正试图在我的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;
}
});
答案 0 :(得分:2)
所以看来我做错了两件事。
我的Schemas.js文件需要从/lib
目录运行,以便在加载任何其他代码之前执行它。谢谢Bjørn
我的第二个错误是我使用Schemas = {};
前缀定义了var
。通过调用var
,它限制了Schemas对象的使用,这意味着它无法在不同的页面或脚本中使用。