DynamodB получить все элементы по массиву идентификаторов - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть таблица с атрибутом с именем id и типа HASH. Я хочу получить все элементы из массива идентификаторов.

{
    TableName: `MyTable`,
    FilterExpression: 'id IN (:id)',
    ExpressionAttributeValues: { ':id': ids },
};

Что мне сделать, чтобы получить все предметы по моим идентификаторам?

Ответы [ 2 ]

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

Вы также можете использовать DocumentClient и batchGet.

const AWS = require('aws-sdk');
const documentClient = new AWS.DynamoDB.DocumentClient();

let queryParams = {RequestItems: {}};
queryParams.RequestItems['tableName'] = {
  Keys: [{'id': 'Value1'}, {'id': 'value2'}],
  ProjectionExpression: 'id' //define other fileds that you have Ex: 'id,name'
};

documentClient.batchGet(queryParams, function (err, data) {
  if (err) {
    console.log('failure:getItemByBatch data from Dynamo error', err);
  } else {
    console.log('success:getItemByBatch data from Dynamo data');
    console.log(data)
  }
});
0 голосов
/ 04 ноября 2018

Пожалуйста, используйте BatchGetItem API для получения нескольких значений из таблицы DynamoDB.

BatchGetItem

Пример: -

var dynamodb = new AWS.DynamoDB({maxRetries: 5, retryDelayOptions: {base: 300} });

var table = "Movies";

var year_val = 2015;
var title = "The Big New Movie";

var params = {
    "RequestItems" : {
        "Movies" : {
            "Keys" : [ {
                "yearkey" : {N : "2016"},
                "title" : {S : "The Big New Movie 1"}
            } ]
        }
    },
    "ReturnConsumedCapacity" : "TOTAL"
};

dynamodb.batchGetItem(params, function(err, data) {
    if (err) {
        console.error("Unable to get item. Error JSON:", JSON.stringify(err,
                null, 2));
    } else {
        console.log("Movie data:", JSON.stringify(data, null, 2));
    }
});
...