Javascript 将quickForm与集合和单独的架构同时使用似乎不起作用

Javascript 将quickForm与集合和单独的架构同时使用似乎不起作用,javascript,forms,meteor,meteor-autoform,meteor-collection2,Javascript,Forms,Meteor,Meteor Autoform,Meteor Collection2,我想在数据库中存储以秒为单位的时间值 在表单中,用户应该能够将其键入字符串(MM:SS)。提交后,字符串(MM:SS)应转换为秒。这就是为什么表单验证所依据的模式与后端(在将表单写入数据库之前)用于验证的模式不同的原因 所以我做了这里应该做的()并定义了两个模式,一个用于表单(使用time.type=“String”),另一个用于附加到集合(time.type=Number) 在模板中,我设置了两个参数,collection=“TimeItem”和schema=“SpecialFormSchem

我想在数据库中存储以秒为单位的时间值

在表单中,用户应该能够将其键入字符串(MM:SS)。提交后,字符串(MM:SS)应转换为秒。这就是为什么表单验证所依据的模式与后端(在将表单写入数据库之前)用于验证的模式不同的原因

所以我做了这里应该做的()并定义了两个模式,一个用于表单(使用time.type=“String”),另一个用于附加到集合(time.type=Number)

在模板中,我设置了两个参数
collection=“TimeItem”
schema=“SpecialFormSchema

最后,表单始终使用HTML数字输入字段进行呈现,并忽略表单模式

有人能帮忙吗?
提前感谢!

集合和架构不支持同时使用。您必须选择其中一个

试着使用钩子来做你想做的事情:

它实际上可以正常工作。我愚蠢的错误是用不同的模板进行实验,然后用错误的模板工作,因此没有看到任何结果

工作javascript:

// schema for collection
var schema = {
    time: {
        label: "Time (MM:SS)",
        type: Number // !!!
    },
    // ...
};
SongsSchema = new SimpleSchema(schema);
Songs.attachSchema(SongsSchema);

// schema for form validation
schema.time.type = String // changing from Number to String!
SongsSchemaForm = new SimpleSchema(schema);
模板的外观:

{{>quickForm
   id="..."
   type="insert"
   collection="Songs"
   schema="SongsSchemaForm"
}}

您不能将两者都用于单个表单谢谢您的回复!但您的意思是什么?不可能同时安装它们吗?或者将它们都用于同一表单吗?两个软件包的说明似乎都指出这不应该是一个问题。自动表单手册假设:此架构将用于在提交之前生成和验证表单,因此,如果要使用与集合使用的架构稍有不同的架构,可以将其与集合一起指定。但是,最后一个对象仍然必须通过对集合模式的验证。”这种行为正是我想要的……我考虑使用模式(“SimpleSchema”如autoform手册中所述)进行表单验证(字符串)并在我将字符串转换为数字后在后端使用集合进行验证。我可能仍然错了,但您如何解释我在上面的评论中引用的行呢?对我来说,这听起来像是在“同时使用集合”“简单的考试应该没问题……你说得对。这就是文件所说的。如果您没有解决这个问题,可以尝试在自动表单github repo上发布它。您仍然需要一种将字符串转换为数字的方法。我认为其中一个地方可能是这样做的好地方