AWS Dynamodb中YYYY-DD-MM格式日期匹配当前日期查询报错问题
问题解决步骤
核心错误点
- 表名写错:你的表实际叫
DATETABLE,但代码里TableName填的是'date',导致查询了错误的表。 - 日期格式不匹配:表中存储的是
YYYY-DD-MM格式,而new Date().toISOString().split('T')[0]生成的是YYYY-MM-DD,格式对不上自然查不到数据。 - 变量名混乱:错误提示提到
:date,但你代码里用的是:todaydate,大概率是实际代码里表达式变量名和属性值的键拼写不一致。
修正后的代码
// 生成和表中一致的YYYY-DD-MM格式日期 const now = new Date(); const year = now.getFullYear(); const day = String(now.getDate()).padStart(2, '0'); const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需加1补正 const currentdate = `${year}-${day}-${month}`; client.query({ TableName: 'DATETABLE', // 修正为正确表名 KeyConditionExpression: 'date = :todaydate', ExpressionAttributeValues: { ':todaydate': currentdate // 确保变量名和表达式完全对应 } }) .then(data => { // 直接通过返回条目数判断是否存在匹配数据 if (data.Items.length > 0) { console.log('存在匹配当前日期的数据'); } else { console.log('无匹配当前日期的数据'); } }) .catch(err => { console.error('查询失败:', err); });
优化建议
如果只需要判断存在性,不需要返回全部数据,可以加Limit:1减少读取量,提升效率:
client.query({ TableName: 'DATETABLE', KeyConditionExpression: 'date = :todaydate', ExpressionAttributeValues: { ':todaydate': currentdate }, Limit: 1 })
内容的提问来源于stack exchange,提问作者aws demo
相关产品推荐
相关产品推荐

