Ich habe versucht, Daten aus der DynamoDB seit 2 Tagen abzufragen. Macht mich wahnsinnig.Kann DynamoDB mit Begins_with für Liste der Elemente nicht abfragen
Ich habe einen Tisch für Schreibtische in einem Büro. Angenommen, es gibt zwei Büros, Cork und Dublin. Ich habe eine Spalte namens "deskName", die Namen wie "cork1", "cork2", "dub1", "dub2" haben würde. Ich möchte in der Lage sein, die Tabelle nach Items abzufragen, die "cork" oder "dub" enthalten, da sie in derselben Tabelle sind, aber ich möchte nicht die gesamte Tabelle zurück scannen.
Code:
const params = {
TableName: process.env.DYNAMODB_DESKS_TABLE,
//KeyConditionExpression: '#deskName = :deskName',
KeyConditionExpression: "begins_with(#deskName, :deskName)",
ExpressionAttributeNames: {
"#deskName": "deskName"
},
ExpressionAttributeValues: {
":deskName": "cork"
}
}
dynamodb.query(params, (error, result) => {
if (error) {
console.error(error);
callback(null, {
statusCode: error.statusCode || 501,
headers: {'Content-Type': 'text/plain'},
body: 'Couldn\'t get desks'
});
return;
}
const response = {
statusCode: 200,
body: JSON.stringify(result.Item)
};
callback(null, response);
});
YAML:
HotDeskDesksDBTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
-
AttributeName: deskName
AttributeType: S
KeySchema:
-
AttributeName: deskName
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:provider.environment.DYNAMODB_DESKS_TABLE}
ERROR:
ValidationException: Query key condition not supported
Ich schaffte es, einen Artikel zurück zu bekommen, als ich die Bedingung = 'Kork-1' hatte. Ich möchte jeden Gegenstand bekommen, der mit "Kork" beginnt.
Danke
Was ist der Fehler oder das Problem genau? –
Total vergessen, das hinzuzufügen. Entschuldigung, ich werde es jetzt zur Frage hinzufügen. – SmiffyKmc
@MarkB hat den Fehler jetzt hinzugefügt, vielen Dank dafür! – SmiffyKmc