이전 블로그에서는 JavaScript에서 N1QL(SQL++)을 실행하는 방법에 대해 설명했습니다. 함수문서 처리 반복기를 통해, 데이터 조작, 오류 처리, 준비된 진술서 및 기타 고급 주제. 마지막으로 다룰 주제는 7.1에 새롭게 추가된 JavaScript 라이브러리 저장 옵션을 활성화하는 기능입니다.
계층적 자바스크립트 라이브러리 저장소
7.1의 또 다른 주요 변경 사항은 자바스크립트 라이브러리 저장소가 플랫에서 계층 구조로 변경된 것입니다.
즉, 이제 글로벌 라이브러리와 함께 버킷과 스코프 아래에 라이브러리를 만들 수 있습니다.
글로벌 라이브러리는 글로벌 및 스코프 UDF로 모두 사용할 수 있지만 스코프 라이브러리는 해당 라이브러리와 동일한 스코프에서 생성된 스코프 UDF에만 사용할 수 있습니다.
즉, 글로벌 라이브러리를 사용하면 라이브러리를 애플리케이션의 확장으로 계속 취급하고 새 라이브러리를 게시하면 다른 버킷과 범위에서 모든 인스턴스를 자동으로 수정할 수 있습니다. 관리_외부_범위_기능 권한이 있고 직접 사용할 라이브러리를 만들고 싶다면 만들 수 있습니다.
또는 애플리케이션 개발자로서 특정 글로벌 라이브러리의 범위별 구현(예: 애플리케이션의 다음 릴리스를 위해 구현하는 새 코드가 포함된 로컬 인스턴스)을 만들고 싶을 수도 있습니다.
라이브러리 조작하기
그리고 jsevaluator 이 블로그의 시작 부분에 표시된 라이브러리를 조작하는 데 사용되는 REST 엔드포인트가 버킷과 범위를 허용하도록 확장되었습니다.
이렇게 하면 됩니다:
글로벌 라이브러리
1 |
curl -v -X POST http://localhost:8093/평가자/v1/라이브러리/수학 -u 관리자:비밀번호 -d 'function add(a, b) { let data = a + b; return data; }' |
범위 라이브러리
1 |
curl -v -X POST 'http://localhost:8093/evaluator/v1/libraries/math?bucket=b1&scope=s1' -u 관리자:비밀번호 -d 'function add(a, b) { let data = a + b; return data; }' |
인증된 사용자는 각 수준에서 라이브러리를 만들 수 있는 적절한 권한이 있어야 합니다: 관리_외부_기능 글로벌 라이브러리 및 관리_외부_범위_기능 스코프 라이브러리의 경우
또한 참조된 버킷과 범위가 이미 존재해야 합니다.
반복해서 말하지만, curl 명령에는 정의하려는 새 함수뿐만 아니라 전체 라이브러리가 포함되어야 합니다. 라이브러리를 사용하는 모든 UDF에 변경 사항이 반영되고 실수로 삭제할 수 있는 함수는 여러 범위와 UDF에 영향을 미칠 수 있으므로 주의해야 합니다.
의심의 여지를 없애기 위해 UI에도 적용됩니다.
UDF에서 라이브러리 참조하기
모든 예제 만들기 함수 는 라이브러리에 간단한 문자열 식별자를 사용하는데, 이는 글로벌 라이브러리를 사용한다는 의미입니다.
함수 만들기 ... 언어 자바스크립트 는 라이브러리 이름에 대해 다음 세 가지 형식을 지원합니다:
-
- 식별자(예:, “라이브러리“: 글로벌 라이브러리를 가리킵니다.
- 그리고 ./ 표기법, 예를 들어, “./도서관“: 현재 라이브러리 아래의 라이브러리를 의미합니다. 쿼리_컨텍스트전역 함수를 위한 전역 라이브러리와 범위 함수를 위한 해당 범위 라이브러리입니다.
- 전체 범위 경로, 예를 들어, “버킷/범위/라이브러리“스코프 함수는 스코프 라이브러리를 가리킬 수 있지만 스코프 간 폴링은 허용되지 않으며, 스코프 함수는 자신의 스코프에 있는 라이브러리만 가리킬 수 있다는 점에 유의하세요.
다른 라이브러리 이름 형식은 허용되지 않습니다.
컬 팁과 요령
라이브러리 수정하기
예를 들어 새 함수를 추가하는 등 REST API를 사용하여 라이브러리를 수정할 때는 라이브러리 전체를 다시 제출해야 한다는 점에 유의하세요. 새 함수의 텍스트만 전달하면 이전 함수가 모두 지워집니다!
유용한 명령줄 스위치 및 옵션
컬 -데이터 바이너리 명령줄 옵션은 curl이 개행과 캐리지 리턴을 버리지 않도록 지시합니다.
이는 함수가 오류를 반환하는 경우 오류 메시지에 오류에 대한 올바른 줄 정보가 포함된다는 점에서 유용합니다. -d 또는 -데이터 를 사용하면 항상 1줄에서 오류가 발생한 것으로 보고됩니다!
예를 들어
1 2 3 4 |
curl -v -X POST http://localhost:8093/평가자/v1/라이브러리/수학 -u 관리자:비밀번호 -데이터-바이너리 '함수 추가(a, b) { let 데이터 = a + b; 반환 데이터; }' |
또 다른 유용한 기능은 라이브러리의 콘텐츠를 파일에 저장한 다음 해당 파일을 -데이터 바이너리 (또는 -d) 인수 앞에 "@' 등을 예로 들 수 있습니다:
1 |
curl -v -X POST http://localhost:8093/평가자/v1/라이브러리/수학 -u 관리자:비밀번호 -데이터-바이너리 '@path/to/file' |
라이브러리가 저장될 경로/파일의 위치입니다.
결론
이 간단한 게시물에서는 이러한 새로운 스토리지 옵션을 통해 빌드하고 배포하는 코드를 계층적으로 유연하게 관리하는 방법을 설명합니다.
마지막으로 한 가지 업데이트가 있는데, 코드 기반 용어에 대한 참조가 있습니다. N1QL 이 시리즈에서는 쿼리 언어를 다음과 같이 지칭합니다. SQL++ - SQL 표준의 확장입니다. Couchbase의 쿼리는 일반적으로 SQL++ 기반이므로 표준 SQL 쿼리 지식을 기반으로 구축할 수 있지만 JSON 문서 등에 적용할 수 있습니다. 앞으로는 다음과 같이 용어를 바꿀 수 있습니다. N1QL 에 대한 SQL++ 를 클릭하면 최신 정보를 모두 확인할 수 있습니다.
이 N1QL 및 JavaScript 주제 시리즈를 따라가 주셔서 감사드리며, 참조를 위해 아래에 주제 요약 목록이 포함되어 있습니다.
리소스
-
- SQL++ - JSON 데이터 관리를 위한 차세대 쿼리 언어
- SQL++/N1QL에서 자바스크립트까지 시리즈: