【问题标题】:Query data without key (AWS DynamoDB SDK Nodejs)无键查询数据(AWS DynamoDB SDK Nodejs)
【发布时间】: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


    【解决方案1】:

    Global Secondary Index 添加到您要查询的字段。或者进行全表扫描。

    【讨论】:

    • 如果你能帮我清理一下。我阅读了文档,它说要包含索引名称。在我的情况下是“用户名”吗?或者是我在第一次创建表时需要设置的东西。
    • 索引名称是您在创建全局二级索引时为其指定的名称。如果您还没有创建 GSI,那么您显然还不能查询它。创建它后,您必须为其命名,这就是您将使用的名称。如果您忘记了为 GSI 提供的名称,您可以在 DynamoDB 控制台中查看它,方法是转到表并在“索引”选项卡下查看 GSI。
    • 谢谢你,这是我问题的答案!
    猜你喜欢
    • 2015-05-18
    • 2016-04-10
    • 2018-11-22
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多