【问题标题】:How to pass primary key value to DynamoDB?如何将主键值传递给 DynamoDB?
【发布时间】:2022-02-01 22:29:20
【问题描述】:

我有一个 nodejs 应用程序,我正在使用 putItem() 插入 DynamoDB。我将值传递给的表有一个名为“id”的主键。现在我要做的是生成一个 UUID 并在我插入数据时将主键值设置为该 UUID。但是,当我插入时,“id”会用双引号插入。例如:而不是id: 229f0a06-7257-4727-b825-a6e8ea343b1e,它将显示为id : "229f0a06-7257-4727-b825-a6e8ea343b1e"。我检查了架构,它显示“id”KeyType 是HASH。这是我必须插入数据库的代码:

let data = {};
 data.id= uuidv4(); //Trying to set the primary key "id"
 data.name = "Test";
 
 const dynamoDB = new DynamoDBClient;
 const result = await dynamoDB.putItem(data);

当我检查数据库表时,它显示id : "229f0a06-7257-4727-b825-a6e8ea343b1e"。如何设置“id”以使其不显示双引号?

谢谢。

【问题讨论】:

  • ID是字符串,为什么不带引号呢?
  • 是字符串? KeyType 是 HASH。它是一个字符串,因为 uuidv4() 返回一个字符串吗?那么我们如何将 UUID 作为哈希添加到主键字段?
  • 键类型和数据类型不是一回事。 “密钥类型”是什么类型的密钥:它是 HASH 密钥,而不是 RANGE 密钥。这些是关键类型。 “数据类型”可以是 DynamoDB 支持的任何您喜欢的类型(字符串、数字或二进制)。在你的情况下,它是一个字符串。

标签: javascript node.js amazon-web-services amazon-dynamodb


【解决方案1】:

如何设置“id”以使其不显示双引号?

你不想。您的分区键(= 哈希键)数据类型是 String,这当然是 UUID 的正确数据类型。

Hash KeyPartition Key 的 DynamoDB 同义词。因此,HASHin the CreateTable KeySchema API 不是数据类型,而是对Partition Key 字段的引用。文档继续,“KeySchema 中的属性也必须在 AttributeDefinitions 中定义”,数据类型为 (S)tring(N)umber(B)inary 之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    相关资源
    最近更新 更多