如何通过复合键获取项目?

8 浏览
0 Comments

如何通过复合键获取项目?

const dynamoDB = new AWS.DynamoDB.DocumentClient();

var params = {};

params.TableName = 'StockDailyCandles';

var key = { 'symbol': 'AAPL', 'datetime': '640590008898' }; // 举例的时间戳

params.Key = key;

var x = await dynamoDB.get(params).promise();

return (x.Item ? true : false);

enter image description here

该表的复合主键是 symbol 和 "datetime"(仅为时间戳)。在 dynamodb 中,这两列都设置为字符串。

我收到的错误是:提供的键元素与模式不匹配。

0
0 Comments

问题的原因是希望通过复合键(composite key)来获取数据项,但是没有找到相应的解决方法。解决方法是使用AWS SDK和DynamoDB的DocumentClient来创建一个getItem函数,然后通过指定表名和复合键的值来获取数据项。以下是整理后的文章:

如何通过复合键获取数据项?

有时候我们希望通过复合键来获取DynamoDB中的数据项,但是我们可能不知道如何实现。下面的代码示例展示了如何通过复合键来获取数据项。

首先,我们需要使用AWS SDK,确保已经安装并配置了AWS SDK。然后,我们需要使用DynamoDB的DocumentClient来创建一个getItem函数。

const AWS = require("aws-sdk");
AWS.config.update({ region: "us-west-2" });
const documentClient = new AWS.DynamoDB.DocumentClient();
async function getItem() {
  const params = {
    TableName: "RetailDatabase",
    Key: {
      pk: "jim.bob.com",
      sk: "metadata",
    },
  };
  const response = await documentClient.get(params).promise();
  return response;
}
getItem()
  .then((data) =>
    console.log("GetItem succeeded:", JSON.stringify(data, null, 2))
  )
  .catch((error) => console.error(JSON.stringify(error, null, 2)));

在上述代码中,我们首先导入AWS SDK并配置所需的区域。然后,我们创建了一个DocumentClient实例,该实例允许我们与DynamoDB进行交互。

接下来,我们定义了一个名为getItem的异步函数。在函数中,我们创建了一个params对象,其中包含了表名和复合键的值。这里的表名为"RetailDatabase",而复合键的值分别为"jim.bob.com"和"metadata"。

然后,我们使用DocumentClient的get方法来获取数据项。通过使用await关键字,我们确保在获取数据项完成之前,程序会等待响应返回。

最后,我们通过调用getItem函数来获取数据项,并使用.then方法来处理成功的响应,使用.catch方法来处理错误的响应。在成功的响应中,我们输出获取到的数据项。

通过按照以上步骤,我们可以通过复合键来获取DynamoDB中的数据项。

0