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)—DynamoDBClientyalnızcasend'i açar. Aynı paketteki topluDynamoDBsınıfı, SDK v2 tarzı çağrılar istiyorsanız birgetItemmetodu taşır; bedeli her komutu paketinize çekmektir.- Iska bir hata değil,
undefined'dır —response.Itemyalnızca yoktur ve çağrı yine de çözümlenir.response.$metadataher 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: …}gerinumberolarak gelir, aralığın dışındaki her şeyBigIntolarak gelir ve büyük bir tam sayı olmayan değercan't be converted to BigIntfırlatır.@aws-sdk/util-dynamodb'dekiunmarshall'a{wrapNumbers: true}geçin; o zaman her sayı bunun yerine birNumberValueolarak gelir ve dönüşüme siz karar verirsiniz.#projtakma adları yük taşıyor —Year, AWS'nin ayrılmış sözcük listesindedir, dolayısıyla onu doğrudan adlandıran birProjectionExpressionreddedilir. Yukarıdaki gibi her adı takma adlamak güvenli varsayılandır. Bu, okuma maliyetini değil yanıtı kırpar (nedeni).ConsumedCapacityisteğe bağlıdır —ReturnConsumedCapacity: '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: trueeklediğinizde 1,0 (ödünleşim).- İstemciyi yukarı taşıyın —
DynamoDBClient'ı 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
- Query ile Scan karşılaştırması — tek bir
GetItembirQuery'yi ne zaman yener. - DynamoDB bölüm anahtarları nasıl çalışır —
GetItemneden tam anahtara ihtiyaç duyar. - DynamoDB ResourceNotFoundException — buradaki alışılmış ilk hata: yanlış tablo adı ya da bölge.
- "The provided key element does not match the schema" — geçtiğiniz anahtar tablonun anahtar şemasıyla eşleşmiyor.
Kaynaklar
- GetItem — Amazon DynamoDB API Reference
- GetItemCommand — AWS SDK for JavaScript v3 Reference
- Read consistency — Amazon DynamoDB Developer Guide
- Capacity unit consumption — Amazon DynamoDB Developer Guide
- @aws-sdk/lib-dynamodb — large numbers and
NumberValue
En son 2026-07-28 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.