Как получить все атрибуты DynamoDB, не вводя их все - PullRequest
0 голосов
/ 31 марта 2019

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

Вот моя лямбда-функция:

exports.handler = async function(event, ctx, callback) {
  var data;
  var params = {
    Key: {
      key: event.key
    },
    TableName : 'app',
    AttributesToGet: [
      'email', 
      'lastName',
      'firstName',
      '...nextAttribute',
      '...nextAttribute'
    ],
  };

  try {
    data = await dynamoDb.get(params).promise()
    console.log(data);
  } 
  catch (err) {
    console.log(err);
  }
  return data.Item;
}

Итак, в этом примере вместо return ...nextAttribute есть ли способ вернуть все атрибуты?

1 Ответ

4 голосов
/ 31 марта 2019

Вам не нужно указывать AttributsToGet.Если вы его опустите, вы получите все атрибуты по умолчанию, например,

exports.handler = async function(event, ctx, callback) {
  const params = {
    Key: {
      key: event.key
    },
    TableName : 'app',
  };

  try {
    const data = await dynamoDb.get(params).promise();
    console.log(data);
    return data.Item;
  } 
  catch (err) {
    console.log(err);
    return undefined;
  }
}

См. Подробности в JavaScript API AWS, в частности, функцию getItem () в DynamoDB.


В качестве альтернативы вы можете найти DynamoDB DocumentClient .Скопировано из get () документации:

var params = {
  TableName : 'Table',
  Key: {
    HashKey: 'hashkey'
  }
};

var documentClient = new AWS.DynamoDB.DocumentClient();

documentClient.get(params, function(err, data) {
  if (err) console.log(err);
  else console.log(data);
});

Примечание, AttributesToGet является устаревшим параметром в соответствии с документацией.Попробуйте вместо этого использовать ProjectionExpression, если вы передумали и хотите четко указать, какие атрибуты нужно извлечь.

...