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

meteorJS autoforms:在插入或使用多种类型的值之前更改值,meteor,meteor-autoform,Meteor,Meteor Autoform,我的表单使用自动表单。现在我有一个特殊的问题,我在问自己是否有可能用autoforms轻松解决这个问题 使用autoforms,我想在MongoDB中构建一个简单的类别树。只需输入名称和父项(选择) 这看起来像这样: Categories.attachSchema(new SimpleSchema({ name : { type: String, label: "Name", max: 200 }, parent : { type : String,

我的表单使用自动表单。现在我有一个特殊的问题,我在问自己是否有可能用autoforms轻松解决这个问题

使用autoforms,我想在MongoDB中构建一个简单的类别树。只需输入名称和父项(选择)

这看起来像这样:

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'}

      ]
    }
  }
}));
很短很简单。自动表单现在为我创建了表单,我可以用它做一些事情

但这里有什么问题?问题是父项的
值。其类型为
String
,因此无法选择“-none-”。但我希望数据库中的字段
parent
在没有父字段时具有
布尔值(
false

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


给一个值2个或更多类型是否更好?是否可能?如果不是,则必须在向集合发送消息之后或之前覆盖该值-但这也不起作用,因为simpleSchema拒绝此过程。对于覆盖,我使用
matb33:collection hooks

您可以使用空字符串代替:

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

您完全正确。目前,它似乎不适用于其他情况,但空字符串对于我的情况来说已经足够好了。