【发布时间】:2018-10-03 21:27:48
【问题描述】:
我在我的 dynamoDB 表中设置了一个 TTL 属性。当我推送记录以获取当前日期(在节点中使用 js sdk)并向其添加一个值(如 5000)。据我了解,当达到该日期时,aws 将清除记录,但仅在 48 小时内。在此期间,记录可以作为查询的结果返回。 我想过滤掉过期的项目,这样如果它们过期但没有被删除,它们就不会作为查询的一部分返回。 这是我用来尝试这样做的:
var epoch = Math.floor(Date.now() / 1000);
console.log("ttl epoch is ", epoch);
var queryTTLParams = {
TableName : table,
KeyConditionExpression: "id = :idval",
ExpressionAttributeNames:{
"#theTTL": "TTL"
},
FilterExpression: "#theTTL < :ttl",
ExpressionAttributeValues: {
":idval": {S: "1234"},
":ttl": {S: epoch.toString()}
}
};
我没有得到任何结果。我相信这个问题与 TTL 属性是一个字符串有关,而我试图在它上面做一个
【问题讨论】:
-
另外,你的比较应该大于不小于时代。您想过滤尚未过期的值吗?满足过滤条件的项目将被返回。你可能会反过来想。
标签: amazon-web-services amazon-dynamodb ttl