Meteor - simpl-schema类型boolean,接受“Yes”为true,“No”为false

时间:2018-01-10 09:54:54

标签: javascript validation meteor simpl-schema

我在外部文件中创建了一个包含所有必填字段和可选字段的Schema,并在我的client.js上创建了一个包含用户输入的XLSX字段的数组。 我的目标是根据我的模式验证我的数组,如果缺少任何疯狂字段或者任何字段输入错误,则输出错误。 这是我的代码,如果输入值错误,则更改输入值,在这种情况下,如果输入是字符串“是”,则将其评估为true,否则为false:

myField: {
        type: (Boolean), 
        optional: true,
        custom: function() {
            let value = this.value;
            if (value === "Yes") {
                return value = true;
            }
            else { return value = false }
        }
    },

我已经搜索了关于如何做到这一点的简单模式文档,但是我无法使用提供的示例,我坚持这一点。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您必须使用autoValue而不是custom

custom用于字段验证,而不是用于更改值。

const SimpleSchema = require( 'simpl-schema').default;

const schema = new SimpleSchema(
  {
    myBool:{
      type: Boolean,
      optional: true,
      autoValue(){
        if(this.value == "Yes"){
          return true
        } else if(this.value == "No") {
          return false
        }
      }
    }
  }
)
const validationContext = schema.newContext()

//clean is called in Collection2 before validating
const res = schema.clean({
  myBool: "Yes"
})
console.log("cleaned Object",res)

validationContext.validate(res)
console.log(validationContext.validationErrors())

我个人不会在架构中进行yes / true,no / false转换。