Amazon web services DynamoDB多个筛选条件,给出错误-buildTree错误:未设置参数:ConditionBuilder

Amazon web services DynamoDB多个筛选条件,给出错误-buildTree错误:未设置参数:ConditionBuilder,amazon-web-services,go,amazon-dynamodb,aws-sdk-go,Amazon Web Services,Go,Amazon Dynamodb,Aws Sdk Go,我正在构建restapi,在GO中使用Lambda和DynamoDB 我需要根据多个过滤器查询数据 过滤器的数量可以根据用户在调用RESTAPI时提供的查询参数的数量而变化 根据下面的帖子,我已经开发了添加多个条件的代码 但是当我调用函数时,我会在日志中找到下面的错误 buildTree错误:未设置参数:ConditionBuilder 未应用筛选器表达式,扫描将返回所有结果 下面是代码片段 for queryParam, queryParamValue := range searchPara

我正在构建restapi,在GO中使用Lambda和DynamoDB

我需要根据多个过滤器查询数据

过滤器的数量可以根据用户在调用RESTAPI时提供的查询参数的数量而变化

根据下面的帖子,我已经开发了添加多个条件的代码

但是当我调用函数时,我会在日志中找到下面的错误

buildTree错误:未设置参数:ConditionBuilder

未应用筛选器表达式,扫描将返回所有结果

下面是代码片段

for queryParam, queryParamValue := range searchParams {
        fmt.Println("queryParam:", queryParam, "=>", "queryParamValue:", queryParamValue)
        if queryParam == “param1” {
            param1Condition = expression.Name(“param1”).Equal(expression.Value(queryParamValue))
        }

        if queryParam == “param2” {
            param2Condition = expression.Name(“param2”).Equal(expression.Value(queryParamValue))
        }   
    }


sampleExpr, errSample := expression.NewBuilder().
        WithCondition(param1Condition.Or(param2Condition)).
        Build()
    if errSample != nil {
        fmt.Println("Error in building Sample Expr ", errSample)
    } else {
        fmt.Println("sampleExpr ", sampleExpr)
    }

    input := &dynamodb.ScanInput{
        ExpressionAttributeNames:  sampleExpr.Names(),
        ExpressionAttributeValues: sampleExpr.Values(),
        FilterExpression:          sampleExpr.Filter(),
        TableName:                 aws.String(deviceInfotable),
    }
但是如果我以不同的方式创建表达式,它就会工作

filt := expression.Name("param1").Equal(expression.Value("valu1")).Or(expression.Name("param2").Equal(expression.Value("value2")))

ConditionBuilder
具有
模式
字段

type ConditionBuilder结构{
操作数列表[]操作数生成器
条件列表[]条件生成器
模式条件模式
}
模式
的零值为
未设置状态
。生成条件时,
unsecond
引发错误

案例未设置条件:
返回exprNode{},newUnsetParameterError(“buildTree”、“ConditionBuilder”)

在代码中,如果
queryParam!=“param1”
queryParam!=“param2”
param1Condition
param2Condition
是ConditionBuilder的零值,在生成时失败。

ConditionBuilder
具有
模式
字段

type ConditionBuilder结构{
操作数列表[]操作数生成器
条件列表[]条件生成器
模式条件模式
}
模式
的零值为
未设置状态
。生成条件时,
unsecond
引发错误

案例未设置条件:
返回exprNode{},newUnsetParameterError(“buildTree”、“ConditionBuilder”)

在代码中,如果
queryParam!=“param1”
queryParam!=“param2”
param1Condition
param2 condition
是ConditionBuilder的零值,在构建时失败。

什么是
param1Condition
的零值和
param2Condition
?什么是
param1Condition
的零值和
param2Condition
?在我的情况下,我有多个条件,6。最终用户可以指定任意数量的条件(0到6)。因此,某些条件可能没有任何值。有没有办法,我们仍然可以添加一个没有任何值的条件?在我的例子中,我有多个条件,6。最终用户可以指定任意数量的条件(0到6)。因此,某些条件可能没有任何值。有没有办法,我们仍然可以添加一个没有任何值的条件?