2017-11-29 5 views
1

Azure 포털의 스크립트 탐색기를 사용하여 사전 삭제 트리거를 만들었습니다. 아래 트리거는 자바 스크립트로 작성된 것입니다 :CosmosDB에서 TTL 값을 조정하여 삭제 트리거를 실행할 수 있습니까?

function markReminderAsPastDue() { 
var collection = getContext().getCollection(); 
var request = getContext().getRequest(); 
var docToCreate = request.getBody(); 
docToCreate["pastDue"] = true; 
docToCreate["id"] = ""; 
var accepted = collection.createDocument(collection.getSelfLink(), 
    docToCreate, 
    function (err, documentCreated) { 
     if (err) throw new Error('Error' + err.message); 
    }); 
if (!accepted) throw new Error("Document creation not accepted"); 

}

나는 관련 컬렉션의 각 문서에 대한 TTL 값을 설정합니다. 따라서 TTL 값은 -1이 아니며 시간이 만료되면 문서는 자동으로 삭제됩니다. 수동으로 문서를 삭제하면 사전 삭제 트리거가 시작됩니다. 그러나 TTL 값 때문에 문서가 암시 적으로 삭제되면 트리거가 실행되지 않습니다. 이 문제를 해결하려면 어떻게해야합니까? TTL 값으로 트리거를 실행할 수 있습니까?

답변

1

내가 아는 한, Azure Cosmos DB에는 TTL에 대한 어떤 종류의 콜백 메커니즘도 없습니다. TTL 적용은 만료 된 문서를 매 초마다 쿼리 한 다음 삭제합니다.

귀하의 요구 사항과 결합하여, 추가 비즈니스 로직을 수행 할 수있는 응용 프로그램 계층에서 TTL 작업을 모방하는 것이 좋습니다.

각 수정에 대한 업데이트 시간을 업데이트하는 각 문서에서 업데이트 시간 속성을 설정할 수 있습니다. 그런 다음 응용 프로그램 계층에서 폴링 메커니즘을 수행하고 업데이트 시간이 만료되면 데이터를 찾아 삭제합니다.

응용 프로그램 계층의 부담을 줄이기 위해 데이터를 삭제하는 작업을 Cosmos DB Stored Procedure에 제공 할 수 있습니다.

희망이 있으면 도움이됩니다.