GlideRecord - 클라이언트

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기15분
  • GlideRecord API는 데이터베이스 작업을 수행하는 메서드를 제공합니다. 이 API를 사용하면 클라이언트 스크립트 및 UI 정책 스크립트와 같은 클라이언트 측 스크립트에서 일부 GlideRecord 기능을 사용할 수 있습니다.

    GlideRecord에는 기록과 필드가 모두 포함됩니다. 클라이언트 측 GlideRecord 메서드로 만든 쿼리는 서버에서 실행됩니다. 따라서 클라이언트 브라우저에서 레코드 데이터를 가져오도록 요청합니다.

    클라이언트 측 GlideRecord API는 범위가 지정된 애플리케이션에서 지원되지 않습니다. 대신 스크립트 포함을 생성하고 GlideAJAX API를 사용하거나 REST API를 사용합니다. 또한 이 API는 스크립트를 실행하는 사용자의 자격 증명을 기반으로 ACL(접근 제어 목록)을 적용합니다. ACL 없이 서버에서 코드를 실행하려면 GlideAjax API를 사용하십시오.

    클라이언트 측 GlideRecord - GlideRecord(문자열 tableName)

    지정된 테이블에 대한 GlideRecord 클래스의 인스턴스를 만듭니다.

    표 1. 매개변수
    이름 유형 설명
    tableName 문자열 사용할 테이블입니다.
    var now_GR = new GlideRecord('incident');

    클라이언트 측 GlideRecord - addOrderBy(문자열 열)

    쿼리에서 정렬 기준이 되는 열을 추가합니다.

    표 2. 매개변수
    이름 유형 설명
    column 문자열 결과 집합을 정렬할 열입니다.
    표 3. 반환
    유형 설명
    void

    클라이언트 측 GlideRecord - addQuery(문자열 이름, 객체 값)

    지정된 필드 이름이 지정된 값과 같거나 값 목록에 있는 기록을 반환하는 쿼리를 추가합니다.

    SQL에 익숙한 경우 이 메서드는 "where" 절과 유사합니다. 이 메서드를 여러 번 호출하여 단일 필터에 대해 하나 이상의 쿼리를 만들 수 있습니다. 이 방법의 경우 쿼리는 AND'ed입니다. 원하는 쿼리를 모두 정의한 후에는 지정된 클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값) 쿼리 절(filter)을 실행합니다.

    AND 이외의 작업을 수행하려면 addQuery(String name, Object 연산자, Object value) 메서드 또는 setEncodedQuery() 메서드를 사용합니다.

    표 4. 매개변수
    이름 유형 설명
    이름 문자열 확인할 필드의 이름입니다.
    객체 쿼리할 값의 값 또는 목록입니다.
    표 5. 반환
    유형 설명
    void

    여러 쿼리를 보여 주는 예입니다.

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('priority', 4); // Priority is 4 – Low and,
    now_GR.addQuery('state', 3); // State is On Hold
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
           // Print all INC with priority 4 – Low AND state is On Hold
            console.log(result.getValue('number')); 
        }
    }

    문자열 개체를 전달하는 방법을 보여 주는 예제입니다.

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('short_description', new String('USB device not working')); // string object
    now_GR.addQuery('priority', 4); //number
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
           // Print all INC with priority 4 – Low AND short description contains 'USB device not working'
            console.log(result.getValue('number')); 
        }
    }

    클라이언트 측 GlideRecord - addQuery(문자열 이름, 객체 연산자, 객체 값)

    필드가 지정된 조건(필드, 연산자, 값)을 충족하는 기록을 반환하는 필터를 추가합니다.

    SQL에 익숙한 경우 이 메서드는 "where" 절과 유사합니다. 이 메서드를 여러 번 호출하여 단일 필터에 대해 하나 이상의 쿼리를 만들 수 있습니다. 원하는 쿼리를 모두 정의한 후에는 지정된 클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값) 쿼리 절(filter)을 실행합니다.

    더 복잡한 쿼리를 만들려면 setEncodedQuery() 메서드를 사용합니다.

    표 6. 매개변수
    이름 유형 설명
    이름 문자열 확인할 필드의 이름입니다.
    운영자 객체 쿼리 연산자입니다. 사용 가능한 값은 value 매개변수의 데이터 유형에 따라 다릅니다.
    숫자:
    • =
    • !=
    • >
    • >=
    • <
    • <=
    문자열(대문자여야 함):
    • =
    • !=
    • IN
    • 에 없음
    • STARTSWITH
    • ENDSWITH
    • 포함
    • 포함하지 않음
    • INSTANCEOF
    주:
    LIKE 연산자를 사용하지 마십시오. 대신 CONTAINS를 사용합니다.
    객체 쿼리할 값(대/소문자 구분 안 함)입니다.
    표 7. 반환
    유형 설명
    void

    필터에 여러 쿼리를 추가하는 방법을 보여 주는 예입니다.

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('priority', '<=', 2); // Priority is 2 or higher and,
    now_GR.addQuery('short_description', 'CONTAINS', 'crash'); // Short description contains the word crash
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
           // Print all INC with priority of 2 or higher AND short description contains "crash"
            console.log(result.getValue('number')); 
        }
    }

    단일 쿼리에서 여러 조건을 확인하기 위해 배열을 전달하는 방법을 보여주는 예제입니다.

    var priorities = [4,2]; 
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('priority', 'IN', priorities); 
    now_GR.query(response); 
    
    function response(result) {
      while(result.next()) {
        console.log(result.getValue('number')); 
      } 
    }

    클라이언트 측 GlideRecord - deleteRecord(함수 responseFunction)

    현재 기록을 삭제하고 완료되면 지정된 응답 함수를 호출합니다.

    표 8. 매개변수
    이름 유형 설명
    응답 함수 기능 콜백에 대한 응답 함수입니다.
    표 9. 반환
    유형 설명
    없음

    이 예제에서는 레코드를 삭제한 다음 응답 함수 response 를 호출하여 경고 메시지를 기록합니다.

    var recordGR = new GlideRecord('incident');
    if (recordGR.get('99ebb4156fa831005be8883e6b3ee4b9')) {
      recordGR.deleteRecord(response);
    }
    
    function response(result) {
      alert('Deleted record sys_id: ' + result.getValue('sys_id'));
    }

    출력:

    Deleted record sys_id: 99ebb4156fa831005be8883e6b3ee4b9

    클라이언트 측 GlideRecord - get(문자열 sys_id)

    지정된 sys_id 있는 기록에 대해 GlideRecord 쿼리를 실행합니다. 이 메서드는 단일 레코드를 쿼리하는 데 사용될 것으로 예상되므로 반환하기 전에 다음 작업이 수행됩니다.

    표 10. 매개변수
    이름 유형 설명
    sys_id 문자열 찾을 기록의 sys_id입니다.
    표 11. 반환
    유형 설명
    부울 일치하는 기록이 하나 이상 있으면 True입니다. 기록을 찾을 수 없는 경우 False입니다.

    클라이언트 측 GlideRecord - getEncodedQuery()

    현재 결과 세트의 쿼리 조건을 인코딩된 쿼리 문자열로 조회합니다.

    표 12. 매개변수
    이름 유형 설명
    없음
    표 13. 반환
    유형 설명
    문자열 쿼리에 추가된 모든 조건을 포함하는 인코딩된 쿼리 문자열입니다.

    클라이언트 측 GlideRecord - getLimit()

    GlideRecord 쿼리에서 반환할 기록 제한을 반환합니다.

    표 14. 매개변수
    이름 유형 설명
    없음
    표 15. 반환
    유형 설명
    번호 GlideRecord 쿼리에서 반환할 기록 제한입니다.

    클라이언트 측 GlideRecord - getTableName()

    이 GlideRecord와 연결된 테이블의 이름을 검색합니다.

    표 16. 매개변수
    이름 유형 설명
    없음
    표 17. 반환
    유형 설명
    문자열 테이블 이름
    var item = new GlideRecord('sc_request'); 
    item.addQuery('sys_id', current.request); 
    item.query(itemResponse); 
     
    function itemResponse(item) {
       alert('The table is ' + item.getTableName());
    }

    클라이언트 측 GlideRecord - hasNext()

    GlideRecord에 기록이 더 있는지 확인합니다.

    표 18. 매개변수
    이름 유형 설명
    없음
    표 19. 반환
    유형 설명
    부울 쿼리 세트에 더 많은 기록이 있는 경우 True입니다.

    클라이언트 측 GlideRecord - insert(Function responseFunction)

    현재 기록에 대해 설정된 필드 값을 사용하여 새 기록을 삽입합니다.

    표 20. 매개변수
    이름 유형 설명
    응답 함수 기능 기록이 삽입되면 실행할 기능입니다.
    표 21. 반환
    유형 설명
    문자열 삽입된 기록의 Sys_id이거나 기록이 삽입되지 않은 경우 null입니다.
    var now_GR = new GlideRecord('incident');
    now_GR.short_description = 'Learn about GlideRecord';
    var recResponse = now_GR.insert(handleResponse);
    
    function handleResponse(recResponse, answer) {
    // Answer will be the sys_id of the created record or null
    alert('Newly created sys_id is - ' + answer + ' exists');
    }

    클라이언트 측 GlideRecord - next()

    GlideRecord의 다음 기록으로 이동합니다.

    표 22. 매개변수
    이름 유형 설명
    없음
    표 23. 반환
    유형 설명
    부울 쿼리 세트에 기록이 더 이상 없는 경우 False입니다.
    var rec = new GlideRecord('incident');
    rec.query(recResponse);
     
    function recResponse(rec) {
      while (rec.next()) { 
        alert(rec.number + ' exists');
      }
    }

    클라이언트 측 GlideRecord - orderBy(문자열 열)

    orderBy 열을 지정합니다. 여러 열을 기준으로 정렬하기 위해 두 번 이상 호출될 수 있습니다.

    표 24. 매개변수
    이름 유형 설명
    column 문자열 결과 집합을 정렬하는 데 사용할 열 이름입니다.
    표 25. 반환
    유형 설명
    void
    function UpdateProjectWBS(project) {
      var count = 0;
      var child = new GlideRecord('pm_project_task');
      child.addQuery('parent', project.sys_id);
      child.orderBy('order');
      child.orderBy('number');
      child.query(childResponse);
      g_form.addInfoMessage(count + ' Project Tasks updated');
    }
     
    function childResponse(child) {
      var len = child.getRowCount().toString().length;
      var seq = 0;
      while (child.next()) {
        count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
      }
    }

    클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값)

    addQuery() 필터를 기반으로 테이블에 대해 서버에 쿼리를 실행합니다. 이 메서드는 GlideRecord 테이블과 테이블의 참조를 쿼리합니다.

    동기 쿼리 호출을 수행하지 마십시오. 응답 함수 없이 쿼리를 수행하면 호출이 동기식으로 수행되며, 이는 디스플레이가 계속되기 전에 쿼리 응답을 기다린다는 것을 의미합니다.

    표 26. 매개변수
    이름 유형 설명
    이름 문자열 옵션입니다. 쿼리할 필드의 이름입니다.
    응답 함수 기능 쿼리 결과를 사용할 수 있을 때 호출되는 함수입니다.
    문자열 옵션입니다. 쿼리할 필드 값입니다. 모든 리터럴 쌍은 쿼리 쌍(field : value)으로 간주됩니다.
    표 27. 반환
    유형 설명
    void

    다음은 응답 함수가 있는 기본 예제입니다.

    var rec = new GlideRecord('incident');
    rec.query(recResponse);
     
    function recResponse(rec) {
      while (rec.next()) { 
       alert(rec.number + ' exists');
      } 
    }

    다음 예제에서는 비동기 예제와 함께 synchronus와 asynchronous 구문의 차이점을 보여 줍니다.

    // synchronous call syntax (no response function): DO NOT USE
            query();
            
            // asynchronous call syntax
            // performs query with current conditions, calls responseFunction when done
            query(responseFunction)
            
            // synchronous call syntax (no response function): DO NOT USE
            // adds "category=hardware" to current query conditions and performs query
            query('category', 'hardware')
            
            // asynchronous call syntax
            // adds "category=hardware" to current query conditions, performs query, and calls responseFunction when done
            query('category', 'hardware', responseFunction)
            
            // asynchronous call example
            // adds "user_name=abel.tuter" to current query conditions, performs query, and calls defined response function when done
            function onLoad() {
            var now_GR = new GlideRecord("sys_user");
            now_GR.query("user_name", "abel.tuter", function(now_GR) {
            if (now_GR.next()) {
            alert("You can access fields by name from the client API, just like in the server API:\n now_GR.name = " + now_GR.name);
            alert("You can also access fields using getValue():\n now_GR.getValue(\"email\") = " + now_GR.getValue("email"));
            if (now_GR.getDisplayValue) {
            alert("In Service Portal, Mobile, and Agent Workspace, you can access a field's display value:\n now_GR.getDisplayValue(\"company\") = " + now_GR.getDisplayValue("company"));
            } else {
            alert("On the desktop, you cannot access a field's display value, but can get its sys_id:\n now_GR.company = " + now_GR.company);
            }
            alert("You cannot dot-walk in the client API:\n now_GR.company.name = " + now_GR.company.name);
            }
            });
            }

    클라이언트 측 GlideRecord - setEncodedQuery(문자열 encodedQuery)

    지정된 인코딩된 쿼리 문자열을 현재 쿼리 절에 추가합니다.

    이 메서드를 사용하면 다른 클라이언트 측 addQuery() 메서드와 달리 단일 쿼리 호출에서 복잡한 필터(인코딩된 쿼리 문자열)를 지정할 수 있습니다. 원하는 쿼리를 모두 정의한 후에는 지정된 클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값) 쿼리 절(filter)을 실행합니다. 인코딩된 쿼리 문자열에 대한 자세한 내용은 인코딩된 쿼리 문자열을 참조하십시오.

    query() 메서드를 호출하기 전에 이 메서드를 여러 번 호출하면 쿼리가 함께 AND됩니다.

    표 28. 매개변수
    이름 유형 설명
    encodedQuery 문자열 현재 쿼리 절에 추가할 인코딩된 쿼리 문자열입니다.
    표 29. 반환
    유형 설명
    void
    var now_GR = new GlideRecord('incident');
    now_GR.setEncodedQuery('priority=4^ORstate=3');
    now_GR.query(response);
     
    function response(result) {
        while(result.next()) {
            console.log(result.getValue('number'));
        }
    }
    

    클라이언트 측 GlideRecord - setLimit(최대 쿼리 수)

    GlideRecord에 있는 기록 수에 대한 제한을 설정합니다.

    표 30. 매개변수
    이름 유형 설명
    maxQuery 번호 검색할 기록 수에 대한 제한입니다.
    표 31. 반환
    유형 설명
    void