gpt4 book ai didi

validation - 如何知道哪个属性称为水线验证规则?

转载 作者:行者123 更新时间:2023-12-04 12:53:39 27 4
gpt4 key购买 nike

我正在对某些字段进行自己的自定义验证,因此只接受某些值(取决于字段)而其余的被拒绝。我想编写一个“过滤器”函数来检查什么属性称为验证,并从那里决定该属性允许使用哪些词。所以模型看起来像这样:

module.exports = {

types: {

filter: function(attribute) {

if (attribute === 'number') {
switch(attribute.value) {

case 'one':
return true;

case 'two':
return true;

default:
return false;

}
} else if (attribute === 'color') {
switch(attribute.value) {

case 'red':
return true;

case 'blue':
return true;

default:
return false;

}
}

},


},

attributes: {

number: {
type: 'string',
required: true,
filter: true
},

color: {
type: 'string',
required: true,
filter: true
}
}
};

当然,在正常的 Sails.js 行为中,“attribute”不是属性,而是属性的值。 (而 attribute.value 只是一个例子,意思是我想要那里的属性值)。

所以,我想要 attribute成为调用验证规则的实际属性。 Sails 可以做到这一点吗? 我的意思是,我可以为模型中的每个字段编写一个函数,但最好有一个适合所有字段的函数(我有很多)。

谢谢。

最佳答案

好的,我会回答你的问题,但这可能不是你想要的。一个属性可以有一个“枚举”,这是我们实现最终目标的方式:

attributes: {
state: {
type: 'string',
enum: ['pending', 'approved', 'denied']
}
}

但是我假设这段代码只是一个人为的例子。这是我认为可行的一种方式。

    module.exports = {



types: {

filter: function(attribute) {

if (attribute === 'number') {
switch(attribute.value) {

case 'one':
return true;

case 'two':
return true;

default:
this.validationErrors.push(attribute);
return false;

}
} else if (attribute === 'color') {
switch(attribute.value) {

case 'red':
return true;

case 'blue':
return true;

default:
this.validationErrors.push(attribute);
return false;

}
}

},


},

attributes: {
validationErrors:(function(){

var errors = [];

return {
push:function(attr){
errors.push(attr);
},
get:function(){
return errors;
}
};

})(),

number: {
type: 'string',
required: true,
filter: true
},

color: {
type: 'string',
required: true,
filter: true
}
}
};


编辑:使用属性方法而不是属性

这个答案可能存在几个问题。我不确定水线如何在这些自定义类型函数中处理“this”。 “this”是否与模型绑定(bind)?还是我们正在创建的模型实例?这里有很多问题要问,但也许这可以给你一些想法并引发讨论。

关于validation - 如何知道哪个属性称为水线验证规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29311185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com