Как я могу запросить TTL в DynamoDB? - PullRequest
0 голосов
/ 04 октября 2018

Я установил атрибут TTL в моей таблице DynamoDB.когда я помещаю записи в записи, получаю текущую дату (используя 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, являющимся строкой, и я пытаюсь сделать <на нем.Но я не смог определиться с типом данных для поля TTL - AWS сделал это для меня.Как я могу исправить это? </p>

1 Ответ

0 голосов
/ 04 октября 2018

В соответствии с документацией «Включение времени жизни» AWS для TTL должен быть задан атрибут Number:

TTL - это механизм для установки определенной временной метки для истекающих элементовс вашего стола.Временная метка должна быть выражена как атрибут на элементах в таблице. Атрибутом должен быть тип данных Number, содержащий время в формате эпохи. По истечении времени отметки соответствующий элемент удаляется из таблицы в фоновом режиме.

Возможно, вам просто нужносоздать новый атрибут Number и установить для него атрибут TTL.

...