Meteor - simpl-schema 类型布尔值,接受 "Yes" 为真,"No" 为假

Meteor - simpl-schema type boolean, accept "Yes" has true and "No" has false

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

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

我已经搜索了关于如何做到这一点的 simpl-schema 文档,但我无法设法让它与提供的示例一起工作,我被困在这个问题上。

提前致谢。

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