我有一个简单的表,其中包含 userId、pictureURL 和一些其他字段。 我想返回具有特定 userId 的所有字段,但是当我这样做时
dynamodb.get({
TableName: tableName,
Key: {
'userid': '39e1f6cb-22af-4f8c-adf5-xxxxxxxxxx'
}
}, ...
我得到 The provided key element does not match the schema
因为它似乎还需要排序键。当我做的时候
dynamodb.get({
TableName: tableName,
Key: {
'userid': '39e1f6cb-22af-4f8c-adf5-xxxxxxxxxx',
'pictureurl': '' // Or null
}
}, ...
我收到错误消息一个或多个参数值无效:AttributeValue 不能包含空字符串
那么如何查询排序键中的任何值?
最佳答案
使用 DynamoDB DocumentClient :
因此,使用查询并使用KeyConditionExpression
参数为分区键提供特定值。查询操作将返回表(或索引)中具有该分区键值的所有项目。
这是一个例子:
const AWS = require("aws-sdk");
AWS.config.update({region: 'us-east-1'});
const params = {
TableName: tableName,
KeyConditionExpression: '#userid = :userid',
ExpressionAttributeNames: {
'#userid': 'userid',
},
ExpressionAttributeValues: {
':userid': '39e1f6cb-22af-4f8c-adf5-xxxxxxxxxx',
},
};
const dc = new AWS.DynamoDB.DocumentClient();
dc.query(params, (err, data) => {
if (err) {
console.log('Error', err);
} else {
for (const item of data.Items) {
console.log('item:', item);
};
}
});
关于javascript - 如何使用排序键中的任何值查询 DynamoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57008908/