javascript - 在 DynamoDB 中按日期获取项目导致 ValidationException
问题描述
我需要按日期过滤的数据,但出现错误
错误验证异常:提供的关键元素与架构不匹配
我的表的主键(仅分区键)为id
.
async function fetchDatafromDatabase() { // get method fetch data from dynamodb
var date = todayDate();
var params = {
TableName: table,
Key: {
"date": date
}
};
let queryExecute = new Promise((res, rej) => {
dynamoDB.get(params, function (err, data) {
if (err) {
console.log("Error", err);
rej(err);
} else {
console.log("Success! get method fetch data from dynamodb");
res(JSON.stringify(data, null, 2));
}
});
});
const result = await queryExecute;
console.log(result);
}
解决方案
为了从 DynamoDB 获取项目,我们必须传递主键,在这种情况下,它只是分区键“id”(假设它是数字并存储 epoc 日期)
var documentClient = new AWS.DynamoDB.DocumentClient();
var date = Date.now();
console.log("date", date);
var params = {
TableName: "test2",
Key: {
id: date,
},
};
documentClient.get(params, function (err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});
完成示例以放置并获取它。
var documentClient = new AWS.DynamoDB.DocumentClient();
var date = Date.now();
documentClient.put(
{
TableName: "test2",
Key: {
id: date,
},
},
function (err, data) {
if (err) console.log("err", err);
if (data) {
documentClient.get(
{
TableName: "test2",
Key: {
id: date,
},
},
function (errGet, dataGet) {
if (errGet) {
console.log("Error", errGet);
} else {
console.log("Success", dataGet);
}
}
);
}
}
);
推荐阅读
- sql-server - 从以二进制形式存储的 Mssql 服务器数据库中检索图像
- hadoop - Hadoop与数据库有何不同?
- xml - JBoss JNDI 绑定中的环境变量
- react-native - 推送通知图标适用于开发,但不适用于生产
- powershell - 如何读取包含需要读取powershell的其他文本文件的路径的文本文件
- javascript - pako.deflate 没有减少我的请求的大小
- amazon-web-services - Dynamodb 与 Redis
- scala - ficus lib有什么方法可以根据配置中的值在scala案例类中注入Long或String
- elasticsearch - 结合嵌套查询获取非法状态异常未能找到路径下的嵌套对象
- c# - 两种类型 A 和 B 的两个 DbSet 的问题,其中 B 继承自 A