Запрос из [List] элементов DynamoDB из функции AWS Lambda - PullRequest
0 голосов
/ 18 ноября 2018

Как мне сделать запрос из списка? Я просто хочу вернуть имя всем этим людям.

var MylistOfIds = ["userid1","userid2","userid3", ... ]

Мой код не работает.

var params = {
    TableName: "myTableName",
    ProjectionExpression: "Name, Post",
    KeyConditionExpression: "begins_with(#sk, :skv)",
    FilterExpression: "#tp in (:mylist)",

    ExpressionAttributeNames: {
        "#tp": "userId",
        "#sk": "Sortkey",

    },
    ExpressionAttributeValues: {

        ":mylist": { L :  MylistOfIds }, 
        ":skv": { "S": "Post" },

    }
};

вот часть запроса

let data1 = await dynamodb.query(params).promise();

          const items = data1.Items.map(
            (dataField) => {

                return {

                  name : dataField.Name.S
                  post : dataField.Post.S

                };
            }
        );
                  callback(null, { "user_name": items });

Я также пытался ответить на этот вопрос здесь без какой-либо удачи: (

Вот моя текущая структура таблицы:

|-----Primary-----|------SortKey-----|-----Name------|----Post-----|
    userid1             Post:345            Bob        Lorem Ipsum
    userid1             Post:457            Bob        Lorem ...
    userid2             Post:678            Rose       asdf .....
    userid3             Post:987            Jack       texte...
    userid3             Post:345            Jack       Loremimplsu.

1 Ответ

0 голосов
/ 20 ноября 2018

В вашем выражении условия ключа нет ключа разделения. Выражение KeyConditionExpression всегда должно иметь ключ раздела.

Вы должны указать имя и значение ключа секции как условие равенства. ( источник )

Кроме того, если userId является вашим ключом раздела, вы не можете использовать его в выражении фильтра.

Выражение фильтра не может содержать атрибуты ключа раздела или ключа сортировки. Вы должны указать эти атрибуты в выражении условия ключа, а не в выражении фильтра. ( источник )

Чтобы выполнить запрос begins_with, предполагая, что UserId является вашим ключом раздела, вам нужно будет сделать отдельный запрос для каждого значения UserId.

Если вам нужна дополнительная помощь, обновите свой вопрос, включив в него текущую структуру таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...