使用AutoForm,SimpleSchema将子模式作为数组项

时间:2017-05-22 12:05:43

标签: meteor meteor-autoform simple-schema

我试图让子程序作为一个数组工作,我认为这是处理我的问题的正确方法(但如果我错了,请纠正我!)。我提供了一个简化的工作示例来显示我的问题,基于AutoForm包提供的BooksSchema示例。在我的例子中,我有一系列的图书馆,以及“图书馆”中的一个字段。对象应该是图书馆的书籍集合。渲染AutoForm不会给我任何我的Book集合中定义的输入标签,而是只显示一(1)个空文本输入字段。

架构:

import SimpleSchema from 'simpl-schema';
SimpleSchema.extendOptions(['autoform']);

BooksSchema = new SimpleSchema({
  title: {
    type: String,
    label: "Title",
    max: 200
  },
  author: {
    type: String,
    label: "Author"
  },
  copies: {
    type: Number,
    label: "Number of copies",
    min: 0
  },
  lastCheckedOut: {
    type: Date,
    label: "Last date this book was checked out",
    optional: true
  },
  summary: {
    type: String,
    label: "Brief summary",
    optional: true,
    max: 1000
  }
}, { tracker: Tracker });

LibrariesSchema = new SimpleSchema({
  collection: {
    type: Array
  },
  'collection.$': {
      type: BooksSchema,
      minCount: 1
  }
});

LibrariesSchema.extend(BooksSchema);


Libraries = new Mongo.Collection("libraries");
Libraries.attachSchema(LibrariesSchema);

自动窗体:

  {{> quickForm collection="Libraries" id="insertBookForm" type="insert"}}

非常感谢您的时间,现在很长时间以来一直在努力奋斗!

2 个答案:

答案 0 :(得分:1)

就我而言,我确实能够通过使用约翰·史密斯(John Smith)的示例而不使用方括号来解决此问题。

LibrariesSchema = new SimpleSchema({
  'books': {
      type: BooksSchema,
      minCount: 1
  }
});

答案 1 :(得分:0)

check()

[SomeType]或模式定义中使用的特定类型的数组被指定为[String],例如。 <{1}},或[BooksSchema]