Операция сканирования с FilterExpression, имеющей несколько условий с оператором "и" - PullRequest
0 голосов
/ 03 апреля 2019

Я пишу лямбда-функцию в Go и использую DynamoDB в качестве базы данных.

Мне нужно написать операцию сканирования с несколькими условиями (например, field1 = value1 и field2 = value2 и field3 = value3).

Я создаю строку FilterExpression на основе количества параметров / условий, предоставленных пользователем.

Мое выражение фильтра выглядит следующим образом:

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

Ятакже предоставляя ExpressionAttributeNames и ExpressionAttributeValues ​​в сопоставлениях со входом операции сканирования.Однако я не получаю никаких результатов (count = 0).

Если я укажу только одно условие или если я использую оператор "или" вместо оператора "и", я получу результаты.

Похоже, что второе условие (# field2 =: field2Val), даже если я использую какое-либо поле (field3, field4 и т. Д.), Всегда приводит к "false".

Есть указатели?

Где я вижу журналы этой операции запроса / сканирования?

1 Ответ

0 голосов
/ 04 апреля 2019

У меня проблема.

Строка условия фильтра верна -

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

Я выполнял итерацию в цикле, чтобы узнать, какие параметры поиска указаны пользователем.

Произошла ошибка в коде, я использовал одно и то же имя переменной для всех имен атрибутов.

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

Это поле "attributeName" использовалось для всех параметров поиска. Это было причиной проблемы, я использовал разные переменные, и она начала работать.

...