我在Go中编写了一个lambda函数,并使用DynamoDB作为我的数据库。
我需要编写具有多个条件的扫描操作(例如field1 = value1和field2 = value2和field3 = value3)。
我根据用户提供的参数/条件数创建一个FilterExpression
字符串。
我的过滤器表达式如下:
(#field1 = :field1Val) and (#field2 = :field2Val)
我还在映射中将ExpressionAttributeNames和ExpressionAttributeValues提供给扫描操作输入。但是,我没有得到任何结果(count = 0)。
如果我只指定一个条件或者我使用“或”运算符而不是“和”运算符,我会得到结果。
看起来像第二个条件(#field2 =:field2Val),即使我使用任何字段(field3,field4等)总是导致“假”。
有什么指针吗?
我在哪里可以看到此查询/扫描操作的日志?
我遇到了问题。
过滤条件字符串是正确的 -
(#field1 = :field1Val) and (#field2 = :field2Val)
我在循环中迭代以找出用户指定的搜索参数。
代码中存在错误,我对所有属性名称使用相同的变量名称。
attributeName := "field1"
attributeNamemap["#field1"] = &attributeName
此“attributeName”字段用于所有搜索参数。这导致了问题,我使用了不同的变量,它开始工作。