Node.js'te (AWS SDK v3) DynamoDB GetItem

AWS SDK v3 size tek bir öğeyi okumanın iki yolunu verir: kablo biçimini konuşan bir DynamoDBClient üzerindeki GetItemCommand ({S: '...'}) ya da düz JavaScript alıp döndüren bir DynamoDBDocumentClient üzerindeki GetCommand.

Örnek düşük düzeyli istemciyi kullanıyor. O sarmalayıcılar, öznitelik değeri kodlamasının kabloda gerçekte nasıl göründüğü ve hata mesajlarının size geri alıntıladığı şeydir. Her hâlükârda isteğin tam birincil anahtara ihtiyacı vardır.

Kod

import {DynamoDBClient, GetItemCommand} from '@aws-sdk/client-dynamodb';

const client = new DynamoDBClient({region: 'us-east-1'});

const command = new GetItemCommand({
  TableName: 'Music',
  Key: {
    Artist: {S: 'Arturo Sandoval'},
    SongTitle: {S: 'Cubano Chant'}
  },
  ProjectionExpression: '#proj0, #proj1, #proj2, #proj3',
  ExpressionAttributeNames: {
    '#proj0': 'Artist',
    '#proj1': 'SongTitle',
    '#proj2': 'AlbumTitle',
    '#proj3': 'Year'
  }
});

const response = await client.send(command);

if (!response.Item) {
  console.log('Item not found');
} else {
  console.log(response.Item);
}

Açıklama

  • client.getItem() değil, send(command)DynamoDBClient yalnızca send'i açar. Aynı paketteki toplu DynamoDB sınıfı, SDK v2 tarzı çağrılar istiyorsanız bir getItem metodu taşır; bedeli her komutu paketinize çekmektir.
  • Iska bir hata değil, undefined'dırresponse.Item yalnızca yoktur ve çağrı yine de çözümlenir. response.$metadata her zaman gelir, dolayısıyla yanıtın kendisinin doğruluğu size hiçbir şey söylemez.
  • unmarshall, sayı türünü büyüklüğe göre seçer — güvenli tam sayı aralığındaki bir {N: …} geri number olarak gelir, aralığın dışındaki her şey BigInt olarak gelir ve büyük bir tam sayı olmayan değer can't be converted to BigInt fırlatır. @aws-sdk/util-dynamodb'deki unmarshall'a {wrapNumbers: true} geçin; o zaman her sayı bunun yerine bir NumberValue olarak gelir ve dönüşüme siz karar verirsiniz.
  • #proj takma adları yük taşıyorYear, AWS'nin ayrılmış sözcük listesindedir, dolayısıyla onu doğrudan adlandıran bir ProjectionExpression reddedilir. Yukarıdaki gibi her adı takma adlamak güvenli varsayılandır. Bu, okuma maliyetini değil yanıtı kırpar (nedeni).
  • ConsumedCapacity isteğe bağlıdırReturnConsumedCapacity: 'TOTAL' ekleyin; yanıt bu okumanın gerçekte neye mal olduğunu bildirir: 4 KB'ın altındaki bir öğenin nihai tutarlı okuması için 0,5 kapasite birimi, ConsistentRead: true eklediğinizde 1,0 (ödünleşim).
  • İstemciyi yukarı taşıyınDynamoDBClient'ı modül kapsamında bir kez oluşturun. İstek başına ya da bir Lambda işleyicisinin içinde bir tane kurmak, her çağrıda bağlantı havuzunu ve çözümlenmiş kimlik bilgilerini çöpe atar.

Görsel olarak yapın

DynoTable öğeleri öznitelik-değer eşlemeleri yerine sıradan satırlar olarak gösterir ve ızgaranın arkasındaki sorguyu çalıştırılabilir bir SDK v3 programı olarak dışa aktarır. DynoTable'ı indirin.

İlgili kılavuzlar

Kaynaklar

En son 2026-07-28 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.