嗨 dynamodb 社区,
所以有问题的表是 MLA_USER_AUTH。如您所见,它具有分区键和排序键。我希望能够使用 user_id 和电子邮件查询数据库。
有时我需要找到与电子邮件关联的用户,有时是用户 ID。 email 和 userid 属性对于每个访问者都是唯一的。有什么办法可以做到吗?
这是我当前的查询。这显然行不通。因为它抛出错误:ValidationException:查询条件缺少关键架构元素:UserID
var params = {
TableName : 'MLA_USER_AUTH',
KeyConditionExpression: "Email = :email",
ExpressionAttributeValues:{
":email": { "S" : email }
}
};
dynamodb.query(params, function(err, data) {
GSI 是我唯一的选择吗?任何帮助表示赞赏
谢谢, 忍者飞翔
最佳答案
二级索引会满足您的需求。
// definition
{
TableName: "MLA_USER_AUTH",
AttributeDefinitions:[
{
AttributeName: "Email",
AttributeType: "S"
}
],
GlobalSecondaryIndexUpdates: [
{
Create: {
IndexName: "emailIndex",
KeySchema: [
{AttributeName: "Email", KeyType: "HASH"}
]
}
}
]
}
// Query
{
TableName : "MLA_USER_AUTH",
IndexName: "emailIndex",
KeyConditionExpression: "Email = :email",
ExpressionAttributeValues:{
":email": { "S" : email }
}
}
参见 http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.JsShell.06.html有关创建它们的更多信息。
关于node.js - AWS Dynamodb : Is it possible to make a query only using sort key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617175/