0

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

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

所以我做了这里应该做的事情(https://github.com/aldeed/meteor-autoform#autoform-1),我定义了两个模式,一个用于表单(time.type =“String”),另一个用于我附加到集合(time.type = Number)。

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

最后,表单始终使用 HTML Number 输入字段呈现并忽略表单架构

有人可以帮忙吗?提前致谢!

4

2 回答 2

0

集合和模式不一起支持。你必须选择一个或另一个。

尝试使用钩子来做你想做的事情: https ://github.com/aldeed/meteor-autoform#callbackshooks

于 2015-06-25T14:39:01.920 回答
0

它实际上可以正常工作。我的愚蠢错误是尝试不同的模板并使用错误的模板,因此没有看到任何结果。

工作的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"
}}
于 2015-06-30T13:45:08.403 回答