使用带有“和”运算符的多个条件的FilterExpression进行扫描操作

问题描述 投票:0回答:1

我在Go中编写了一个lambda函数,并使用DynamoDB作为我的数据库。

我需要编写具有多个条件的扫描操作(例如field1 = value1和field2 = value2和field3 = value3)。

我根据用户提供的参数/条件数创建一个FilterExpression字符串。

我的过滤器表达式如下:

(#field1 = :field1Val) and (#field2 = :field2Val)

我还在映射中将ExpressionAttributeNames和ExpressionAttributeValues提供给扫描操作输入。但是,我没有得到任何结果(count = 0)。

如果我只指定一个条件或者我使用“或”运算符而不是“和”运算符,我会得到结果。

看起来像第二个条件(#field2 =:field2Val),即使我使用任何字段(field3,field4等)总是导致“假”。

有什么指针吗?

我在哪里可以看到此查询/扫描操作的日志?

amazon-web-services go amazon-dynamodb
1个回答
0
投票

我遇到了问题。

过滤条件字符串是正确的 -

(#field1 = :field1Val) and (#field2 = :field2Val)

我在循环中迭代以找出用户指定的搜索参数。

代码中存在错误,我对所有属性名称使用相同的变量名称。

attributeName := "field1"
attributeNamemap["#field1"] = &attributeName

此“attributeName”字段用于所有搜索参数。这导致了问题,我使用了不同的变量,它开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.