Javascript Meteor-简单模式类型布尔,接受;是”;有真实的和;否";有假

Javascript Meteor-简单模式类型布尔,接受;是”;有真实的和;否";有假,javascript,validation,meteor,simpl-schema,Javascript,Validation,Meteor,Simpl Schema,我在一个外部文件中创建了一个模式,其中包含所有必填字段和可选字段,在我的client.js上,我有一个包含用户输入的XLSX字段的数组。 我的目标是根据我的模式验证我的数组,如果任何字段丢失或任何字段的输入类型错误,则输出一个错误。 下面是我的代码,用于在输入值错误时更改输入值。在本例中,如果输入是字符串“Yes”,则将其计算为true,否则为false: myField: { type: (Boolean), optional: true, c

我在一个外部文件中创建了一个模式,其中包含所有必填字段和可选字段,在我的client.js上,我有一个包含用户输入的XLSX字段的数组。 我的目标是根据我的模式验证我的数组,如果任何字段丢失或任何字段的输入类型错误,则输出一个错误。 下面是我的代码,用于在输入值错误时更改输入值。在本例中,如果输入是字符串“Yes”,则将其计算为true,否则为false:

myField: {
        type: (Boolean), 
        optional: true,
        custom: function() {
            let value = this.value;
            if (value === "Yes") {
                return value = true;
            }
            else { return value = false }
        }
    },
我已经搜索了关于如何实现这一点的simlpschema文档,但是我无法通过提供的示例使其工作,我被困在这一点上了


提前感谢。

您必须使用
autoValue
而不是
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转换。

您将
true
false
分配给局部变量
value
?@Jankapunkt我的项目将XLSX转换为XML,其中包含一些必填和可选字段,有些字段只接受
数字,有些接受
字符串
,有些接受
布尔值。如果用户输入“是”,我必须将其转换为
true
,将“否”转换为
false
谢谢!现在有道理了。老实说,我最终在siml模式之外进行了转换,但由于我无法通过阅读文档示例使其在siml中工作,因此我想了解我做错了什么。我再看一下这些文件。再次感谢!