我正在尝试在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对象的使用,这意味着它不能在其他页面或脚本中使用。

09-19 05:25