当前位置: 首页 > 知识库问答 >
问题:

如何在dynamodb中使用GSI?

欧阳声
2023-03-14

我正在使用AWS控制台和NodeJS。

我有一个带有分区键(user\u id)和排序键(company\u id)以及其他属性的dynamodb用户表。

我的一个属性是用户的电子邮件。电子邮件是唯一属性。

我需要通过电子邮件user_id,但我没有他的user_id和company_id。

我认为我应该使用全球二级指数。

我点击了用户表,打开索引选项卡并为该表创建了GSI。(名称:电子邮件,类型:GSI,分区键:电子邮件字符串,属性:user_id)

我正在使用documentClient的html" target="_blank">方法查询。这是我的有效载荷:

payload = {
    "TableName": "users",
    "IndexName": "email",
    "KeyConditionExpression": "#index = :index_value",
    "ExpressionAttributeNames":{
        "#index": "email"
    },
    "ExpressionAttributeValues": {
        ":index_value": {"S": "test@gmail.com"}
    },
    "ProjectionExpression": "user_id",
        "ScanIndexForward": false
    };
}

这是我在CloudWatch中的错误:

“errorMessage”:“一个或多个参数值无效:条件参数类型与架构类型不匹配”

共有1个答案

郭建华
2023-03-14

我在写这个问题时找到了一个解决方案。所以当我使用documentClient时,我的负载应该是这样的

payload = {
    "TableName": "users",
    "IndexName": "email",
    "KeyConditionExpression": "#index = :index_value",
    "ExpressionAttributeNames":{
        "#index": "email"
    },
    "ExpressionAttributeValues": {
        ":index_value": "test@gmail.com" // <----------------
    },
    "ProjectionExpression": "user_id",
        "ScanIndexForward": false
    };
}

希望对某人有所帮助

 类似资料:
  • 我有一个用例可以将begins_with应用于AWS Dynamodb表的主排序键, 我可以从AWS控制台使用begins_with键条件查询表, 我希望使用AWS Javascript SDK实现同样的功能。 我的表中有以下字段- 1。user_id(主分区键) 2。user_relation(主排序键) 我尝试了下面的代码- 错误- 引用- https://docs.aws.amazon.co

  • 我试图使用节点JS AWS-SDK从DynamoDB表中获取项。函数运行良好,但更难使用。 我使用官方文档:http://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/dynamodb/client.html#batchgetitem-property 在该语法示例中,必须提供表名。

  • 问题内容: 检查了AWS文档,但未找到任何有效示例。 这是我的尝试 有记录,但它正在获取具有ID的记录,但我想使用这样的数组 如何使上面的代码成为work.want以获取记录。语法正确,查询运行没有错误,但我没有记录 问题答案: 请参考这个答案 摘要:- 对于“ IN”子句中的固定数量的值: 对于数组中的更多元素并动态形成FilterExpression:-

  • 问题内容: 在我的数据库方案中,我需要一个自动增量主键。我如何实现此功能? PS要访问DynamoDB,我使用倍增极了Node.js的,模块 问题答案: 免责声明:我是Dynamodb-mapper项目的维护者 自动递增键的直观工作流程: 获得最后的柜台位置 加1 使用新数字作为对象的索引 保存新的计数器值 保存对象 这只是为了解释基本思想。绝对不要这样做,因为它不是原子的。在某些工作负载下,您可

  • 我已经通读了AWS关于分页的文档: 根据他们的文件规定: 在响应中,DynamoDB返回限制值范围内的所有匹配结果。例如,如果发出限制值为6且没有筛选器表达式的查询或扫描请求,DynamoDB将返回表中与请求中指定的键条件匹配的前六项(或者在没有筛选器的扫描情况下仅返回前六项) 这意味着,给定我有一个名为的表,其属性称为(可以接受从到的任何数值),我可能会遇到以下难题: 客户提出请求,思考

  • 有人尝试在Apache Flink中使用DynamoDB流吗? Flink有一个Kinesis消费者。但是我正在寻找如何直接使用Dynamo流。 我试了很多次,但什么也没找到。然而,Flink Jira董事会发现一个未决请求。所以我想这个选项还不可用?我有什么选择? 允许FlinkKinesisConsumer适应AWS DynamoDB流