无键查询数据(AWS DynamoDB SDK Nodejs)

Query data without key (AWS DynamoDB SDK Nodejs)

我刚开始使用 AWS Nodejs SDK For DynamoDb

我对如何在不使用分区键的情况下访问特定数据感到有点困惑。

假设我的 table 中只有 1 个项目,属性 "id" 设置为我的分区键

Table 姓名:用户

{
  "full_name": {
    "S": "John Cena"
  },
  "id": {
    "S": "ABC123"
  },
  "password": {
    "S": "youcantseeme"
  },
  "username": {
    "S": "AndHisNameIs"
  }
}

如果我使用我的密钥进行查询,下面的代码将 return 我上面的对象

顺便说一句,我正在使用 dynamodb.query(params, function(err,data){}

使用Key搜索

let params = {
    TableName : "Users",
    KeyConditionExpression: "#myid = :id",
    ExpressionAttributeNames:{
        "#myid": "id"
    },
    ExpressionAttributeValues: {
        ":id": {
            S: "ABC123"
        }
    }
};

无钥匙搜索

-如果我可以在不指定 id 字符串的情况下访问该数据,我会很高兴。例如,如果用户发送 "username" 和 "password",我将没有 ID,因此无法查找。

-下面的代码会 return 一个错误,指出我缺少分区键 "id"

let params = {
    TableName : "Users",
    ExpressionAttributeNames:{
        "#myusername": "username"
    },
    KeyConditionExpression: "#myusername = :username",
    ExpressionAttributeValues: {
        ":username": {
            S: "AndHisNameIs"
        }
    }
};

我的解决方法?

-用用户名而不是id替换分区键?这是 nosql 数据库的工作方式吗?我来自 mysql 环境,所以我只能通过在特定列中请求来搜索特定的字符串或数字或布尔值 lol

在要查询的字段中添加Global Secondary Index。或者进行全面 table 扫描。