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