Meteor 子模式作为带有AutoForm的数组项,SimpleSchema

Meteor 子模式作为带有AutoForm的数组项,SimpleSchema,meteor,meteor-autoform,simple-schema,Meteor,Meteor Autoform,Simple Schema,我试图让子模式作为一个数组工作,我认为这是处理我的问题的正确方法(如果我错了,请纠正我!)。基于AutoForm包提供的BookSchema示例,我提供了一个简化的工作示例来说明我的问题。在我的示例中,我有一个库集合,“Libraries”对象中的一个字段应该是图书馆的图书集合。呈现AutoForm不会给我任何在我的书集合中定义的输入标签,而是只显示一(1)个空文本输入字段 模式: import SimpleSchema from 'simpl-schema'; SimpleSchema.ext

我试图让子模式作为一个数组工作,我认为这是处理我的问题的正确方法(如果我错了,请纠正我!)。基于AutoForm包提供的BookSchema示例,我提供了一个简化的工作示例来说明我的问题。在我的示例中,我有一个库集合,“Libraries”对象中的一个字段应该是图书馆的图书集合。呈现AutoForm不会给我任何在我的书集合中定义的输入标签,而是只显示一(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"}}
提前非常感谢您抽出时间,真的为此奋斗了很长时间

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

check()
或模式定义中使用的特定类型的数组被指定为
[SomeType]
,例如在您的例子中是
[String]
,或者是
[bookschema]

在我的例子中,我确实能够通过使用John Smith的例子来解决这个问题,而没有括号

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

您必须使用extend来组合两个模式。Eg-
MainSchema.extend(子模式)@blueren非常感谢您抽出时间。我更新了我的代码以包含此“扩展”(请参见编辑的问题),但不幸的是,它没有对我造成任何更改。非常感谢您的回复John。不幸的是,我在使用代码时收到以下错误:“未捕获错误:书籍字段的定义无效:”type“可能不是数组。将其更改为“数组”。如果我理解正确,这些[括号]应该不再使用,因为AutoForms 6.0和collection2 core。见例。再次感谢!我所说的可能不再是真的了。我在前一个项目中使用了SimpleSchema,那是很久以前的事了。