mirror of
https://gitee.com/rulego/rulego.git
synced 2025-12-06 14:59:03 +08:00
fix(fieldFilter):Logical error in CheckAllKeys mode
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user