Amazon web services DynamoDB多个筛选条件,给出错误-buildTree错误:未设置参数:ConditionBuilder
我正在构建restapi,在GO中使用Lambda和DynamoDB 我需要根据多个过滤器查询数据 过滤器的数量可以根据用户在调用RESTAPI时提供的查询参数的数量而变化 根据下面的帖子,我已经开发了添加多个条件的代码 但是当我调用函数时,我会在日志中找到下面的错误 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
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)。因此,某些条件可能没有任何值。有没有办法,我们仍然可以添加一个没有任何值的条件?