meteorJS autoforms:在插入之前更改值或使用多种类型的值

时间:2014-10-24 23:27:16

标签: meteor meteor-autoform

我为表单使用autoforms。现在我遇到了一个特殊的问题,我问自己是否可以通过自动方式解决这个问题。

使用我的autoforms,我想在MongoDB中构建一个简单的Category-Tree。只需要一个名字和一个父母(选择)。

这看起来像这样:

Categories.attachSchema(new SimpleSchema({
  name : {
    type: String,
    label: "Name",
    max: 200
  },
  parent : {
    type : String,
    allowedValues: [false, 'id_of_cat_1', 'id_of_cat_2', 'id_of_cat_3'],
    optional : true,
    autoform: {
      options: [
        {label: '- none -', value: false},
        {label: 'cat 1', value: 'id_of_cat_1'},
        {label: 'cat 2', value: 'id_of_cat_2'},
        {label: 'cat 3', value: 'id_of_cat_3'}

      ]
    }
  }
}));

很短很简单。 autoforms现在创建了我的形式,我能够用它来做。

但是这里的问题是什么?问题是parent - 值。它的类型是String,因为这个选择" - none - "不可能。但是,如果没有给出父级,我希望数据库中的字段parent具有boolean值(false)。

现在的问题是如何解决这个问题。

提供2种或更多类型的值是否更好 - 也可能?如果不是,则必须在对集合进行异常之后或之前覆盖该值 - 但这也不起作用,因为simpleSchema确实拒绝此过程。覆盖我使用matb33:collection-hooks

1 个答案:

答案 0 :(得分:1)

您可以改为使用空字符串:

parent : {
  type : String,
  allowedValues: ['', 'id_of_cat_1', 'id_of_cat_2', 'id_of_cat_3'],
  optional : true,
  autoform: {
    options: [
      {label: '- none -', value: ''},
      {label: 'cat 1', value: 'id_of_cat_1'},
      {label: 'cat 2', value: 'id_of_cat_2'},
      {label: 'cat 3', value: 'id_of_cat_3'}
    ]
  }
}

这是有道理的,因为空字符串在if语句中用作false