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