Meteor 子模式作为带有AutoForm的数组项,SimpleSchema
我试图让子模式作为一个数组工作,我认为这是处理我的问题的正确方法(如果我错了,请纠正我!)。基于AutoForm包提供的BookSchema示例,我提供了一个简化的工作示例来说明我的问题。在我的示例中,我有一个库集合,“Libraries”对象中的一个字段应该是图书馆的图书集合。呈现AutoForm不会给我任何在我的书集合中定义的输入标签,而是只显示一(1)个空文本输入字段 模式: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
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,那是很久以前的事了。