Ich fange gerade an, DynamoDB zu verwenden und habe eine 'accounts' Tabelle eingerichtet.GetItem von Secondary Index mit DynamoDB
Ich habe einen sekundären Index eingerichtet, so dass ich einen API-Benutzer und Benutzerschlüssel abfragen kann. Keiner dieser Werte ist der Primärschlüssel, da beide flüchtig sind und geändert werden können.
Die Tabelle wird gebaut mit
TableName: "Accounts",
KeySchema: [
{ AttributeName: "id", KeyType: "HASH" },
{ AttributeName: "email", KeyType: "RANGE" }
],
AttributeDefinitions: [
{ AttributeName: "id", AttributeType: "S" },
{ AttributeName: "email", AttributeType: "S" }
]
und der Index ist
TableName: 'Accounts',
AttributeDefinitions: [
{AttributeName: 'name', AttributeType: 'S'},
{AttributeName: 'apiKey', AttributeType: 'S'}
],
GlobalSecondaryIndexUpdates: [
{
Create: {
IndexName: "ApiAccounts",
ProvisionedThroughput: {
ReadCapacityUnits: 1, WriteCapacityUnits: 1
},
KeySchema: [
{AttributeName: 'name', KeyType: "HASH"},
{AttributeName: 'apiKey', KeyType: "STRING"}
],
Projection: {
ProjectionType: "KEYS_ONLY"
},
ich jetzt versuche, eine Nutzung durch die Abfrage des ApiAccounts
Index-Konto zu erhalten.
Ich versuche
dynamoClient.get({
TableName: 'Accounts',
IndexName: 'ApiAccounts',
Key: {
name: nameKeyArray[0],
apiKey: nameKeyArray[1]
}, callback)
Aber ich bin immer einen Fehler One of the required keys was not given a value
, die mir, dass ich nicht auf einem Index a ‚bekommen‘ kann zu glauben, führt zu tun? Oder ich verweise den Index nicht richtig. Kann jemand für mich klären?
Name und API-Schlüssel sind einzigartig, so dass ich denke, ich mag eine Abfrage vermeiden oder scannen, wenn möglich
Vielen Dank für die Klärung, ich war überall http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.JavaScript.html - Ich nehme an, Abfrage wäre am besten für meinen Anwendungsfall und Leistung? – pedalpete
@pedalpete Ja, beachten Sie jedoch, dass doppelte Datensätze zurückgegeben werden können, wenn Sie einen Index abfragen, da Hash- und Range-Schlüssel eines Index im Gegensatz zu einer Tabelle nicht eindeutig sind. –