【发布时间】:2016-08-19 04:30:49
【问题描述】:
我刚刚开始使用 AWS Nodejs SDK For DynamoDb
我对如何在不使用分区键的情况下访问特定数据有点困惑。
假设我的表中只有 1 个项目,属性“id”设置为我的分区键
表名称:用户
{
"full_name": {
"S": "John Cena"
},
"id": {
"S": "ABC123"
},
"password": {
"S": "youcantseeme"
},
"username": {
"S": "AndHisNameIs"
}
}
如果我使用我的键查询,下面的代码将返回我上面的对象
顺便说一句,我正在使用 dynamodb.query(params, function(err,data){}
按键搜索
let params = {
TableName : "Users",
KeyConditionExpression: "#myid = :id",
ExpressionAttributeNames:{
"#myid": "id"
},
ExpressionAttributeValues: {
":id": {
S: "ABC123"
}
}
};
无钥匙搜索
-如果我可以在不指定 id 字符串的情况下访问该数据,我希望它。例如,如果用户发送“用户名”和“密码”,我将没有 ID,因此无法查找。
-下面的代码将返回一个错误,指出我缺少分区键“id”
let params = {
TableName : "Users",
ExpressionAttributeNames:{
"#myusername": "username"
},
KeyConditionExpression: "#myusername = :username",
ExpressionAttributeValues: {
":username": {
S: "AndHisNameIs"
}
}
};
我的解决方法?
-用用户名而不是id替换分区键?这是nosql数据库的工作方式吗?我来自 mysql 环境,所以我只能通过在某个列中询问它来搜索特定的字符串或 num 或布尔值 lol
【问题讨论】:
标签: node.js amazon-web-services aws-sdk