DynamoDB - 通过全局二级索引获取项目
DynamoDB - Get Item by Global Secondary Index
我有一个现有的 table,它有 10 个字段。字段是这样的:
AuthID, UserID, Age, Job, .etc
table 存储我的用户数据。 “AuthID”是主键,“UserID”是全局二级索引。
当我通过 AuthID 获取项目时,一切正常。但我无法通过 UserID 获取项目。我尝试了 GetItem、Query 和 Scan 方法,但这三种方法都失败了。
我需要能够使用下面写的这 3 种方法获取数据:
1 - Get user data by AuthID (It's already works fine)
2 - Get user data by UserID
3 - Get user data by AuthID and UserID both
AuthID 和 UserID 是唯一的。有人可以告诉我正确的方法吗?
我在文档中搜索了很多,发现如果你需要获取单个项目,那么在使用全局二级索引时你不能使用 get 或 getItem 方法。可以使用查询方法。使用全局二级索引的查询方法示例是
let params = {
TableName: "Users",
IndexName: "your-index",
ExpressionAttributeValues: {
":v1": "myid"
},
KeyConditionExpression: "my_partition_key_in_gsi = :v1",
};
dynamodb.query(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
我有一个现有的 table,它有 10 个字段。字段是这样的:
AuthID, UserID, Age, Job, .etc
table 存储我的用户数据。 “AuthID”是主键,“UserID”是全局二级索引。
当我通过 AuthID 获取项目时,一切正常。但我无法通过 UserID 获取项目。我尝试了 GetItem、Query 和 Scan 方法,但这三种方法都失败了。
我需要能够使用下面写的这 3 种方法获取数据:
1 - Get user data by AuthID (It's already works fine)
2 - Get user data by UserID
3 - Get user data by AuthID and UserID both
AuthID 和 UserID 是唯一的。有人可以告诉我正确的方法吗?
我在文档中搜索了很多,发现如果你需要获取单个项目,那么在使用全局二级索引时你不能使用 get 或 getItem 方法。可以使用查询方法。使用全局二级索引的查询方法示例是
let params = {
TableName: "Users",
IndexName: "your-index",
ExpressionAttributeValues: {
":v1": "myid"
},
KeyConditionExpression: "my_partition_key_in_gsi = :v1",
};
dynamodb.query(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});