저장 프로시저 작성

완료됨

트랜잭션은 JavaScript 함수로 정의됩니다. 그런 다음 저장 프로시저가 호출될 때 함수가 실행됩니다.

function name() {
}

함수 내에서 getContext() 메서드는 다음과 같은 여러 작업을 수행하는 데 사용될 수 있는 컨텍스트 개체를 검색합니다.

  • HTTP 응답 개체에 액세스

  • 해당 Azure Cosmos DB SQL API 컨테이너에 액세스

컨텍스트 개체를 사용하여 HTTP 응답 개체에 액세스하도록 getResponse() 메서드를 호출하여 getResponse() (200)을 반환하고 응답 본문을 고정 문자열로 설정하는 등의 작업을 수행할 수 있습니다.

function greet() {
    var context = getContext();
    var response = context.getResponse();
    response.setBody("Hello, Learn!");
}

다시 말하자면, 컨텍스트 개체를 사용하면 JavaScript 쿼리 API를 사용해 getCollection() 메서드를 호출하여 컨테이너에도 액세스할 수 있습니다.

function createProduct(item) {
    var context = getContext();
    var container = context.getCollection(); 
}

이 시점에서 새 문서 만들기와 같은 일반적인 작업을 수행할 수 있습니다.

function createProduct(item) {
    var context = getContext();
    var container = context.getCollection(); 
    container.createDocument(
        container.getSelfLink(),
        item
    );
}

이 저장 프로시저는 거의 완료되었습니다. 이 코드는 잘 실행되지만 오류가 발생할 위험이 있으며 저장 프로시저가 시간 제한을 초과한 경우 반환되지 않을 가능성이 있습니다. 다음 두 가지 변경 내용을 적용하여 코드를 업데이트해야 합니다.

  • container.createDocument의 부울 반환 값을 저장한 다음, 이를 사용하여 임박한 서버 시간 제한으로 인해 함수에서 반환해야 하는지 여부를 결정합니다.

  • container.createDocument에 세 번째 매개 변수를 추가하여 잠재적 오류를 처리하고 이 저장 프로시저의 응답을 작업에서 반환된 새로 만든 항목으로 설정합니다.

function createProduct(item) {
    var context = getContext();
    var container = context.getCollection(); 
    var accepted = container.createDocument(
        container.getSelfLink(),
        item,
        (error, newItem) => {
            if (error) throw error;
            context.getResponse().setBody(newItem)
        }
    );
    if (!accepted) return;
}

또는 getContext().getCollection()과 동등한 __(이중 밑줄) 바로 가기를 사용할 수 있습니다.