使用全局变量使Meteor Schema可在全站访问

时间:2014-06-27 20:02:10

标签: javascript meteor global-variables

我正试图在我的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;
  }
});

1 个答案:

答案 0 :(得分:2)

所以看来我做错了两件事。

我的Schemas.js文件需要从/lib目录运行,以便在加载任何其他代码之前执行它。谢谢Bjørn

我的第二个错误是我使用Schemas = {};前缀定义了var。通过调用var,它限制了Schemas对象的使用,这意味着它无法在不同的页面或脚本中使用。