fix(fieldFilter):Logical error in CheckAllKeys mode

This commit is contained in:
rulego-team
2025-10-22 19:40:32 +08:00
parent edab89cac4
commit 30a0281382
2 changed files with 20 additions and 3 deletions

View File

@@ -103,8 +103,8 @@ func (x *FieldFilterNode) New() types.Node {
// Init initializes the component.
func (x *FieldFilterNode) Init(ruleConfig types.Config, configuration types.Configuration) error {
err := maps.Map2Struct(configuration, &x.Config)
x.DataNamesList = strings.Split(x.Config.DataNames, ",")
x.MetadataNamesList = strings.Split(x.Config.MetadataNames, ",")
x.DataNamesList = filterEmptyStrings(strings.Split(x.Config.DataNames, ","))
x.MetadataNamesList = filterEmptyStrings(strings.Split(x.Config.MetadataNames, ","))
return err
}
@@ -175,6 +175,18 @@ func (x *FieldFilterNode) checkAtLeastOneMetadata(metadata *types.Metadata) bool
return false
}
// filterEmptyStrings 过滤掉字符串切片中的空字符串
// filterEmptyStrings filters out empty strings from a string slice.
func filterEmptyStrings(strs []string) []string {
var result []string
for _, str := range strs {
if strings.TrimSpace(str) != "" {
result = append(result, strings.TrimSpace(str))
}
}
return result
}
// checkAtLeastOneData 验证至少一个指定的数据字段存在
// checkAtLeastOneData validates that at least one specified data field exists.
func (x *FieldFilterNode) checkAtLeastOneData(data map[string]interface{}) bool {

View File

@@ -62,8 +62,13 @@ func TestFieldFilterNode(t *testing.T) {
"metadataNames": "productType,name",
}, Registry)
assert.Nil(t, err)
node2, err := test.CreateAndInitNode(targetNodeType, types.Configuration{
"checkAllKeys": true,
"dataNames": "temperature",
}, Registry)
assert.Nil(t, err)
var nodeList = []types.Node{node1}
var nodeList = []types.Node{node1, node2}
for _, node := range nodeList {
metaData := types.BuildMetadata(make(map[string]string))