RaspberryPi3의 센서 정보를 MarkLogic으로 얻으세요 (2) MarkLogic과 Node.연합 js 봐봐.

MarkLogic Advent Calendar 2017째 날이다.

개시하다


어제/어제 마크 로직9을 설치해 DB를 구축했다.
MarkLogic은 스키가 없기 때문에 DDL로 데이터를 정의할 필요가 없습니다.DB를 구축한 후 XML과 JSON 데이터를 끊임없이 처리할 수 있다.
그러나 애플리케이션에서 DB에 액세스하려면 액세스 방법에 따라 설정해야 합니다.
예를 들어 REST-AAPI를 사용할 때 MarkLogic에 탑재된 HTTP 서버를 설정해야 한다.
이번에는 노드다.js에서 REST-AAPI까지 MarkLogic와 연결하는 환경을 구축하고 간단한 응용 프로그램을 만들어 봅니다.
또한 MarkLogic의 Node입니다.js 응용 프로그램 개발에 대한 공식 문서는 여기.를 보십시오.

컨디션


다음 환경을 사용합니다.
컨디션
릴리즈
CentOS7
7.4.1708
Node.js
v8.9.1
npm
5.5.1
MarkLogic9
9.0-3
MarkLogic Node.js Client API
2.0.3

중앙 OS 7에서 노드js 설치


우선 노드다.js와 npm를 설치합니다.
# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
# yum install gcc gcc-c++ nodejs

MarkLogic의 HTTP 서버 구축


Node.js 응용 프로그램에서 MarkLogic의 DB에 액세스하려면 REST-IAPI를 사용합니다.
MarkLogic의 REST-AAPI를 사용하기 위해서는 MarkLogic에 탑재된 HTTP 서버를 구축하고 사용하는 DB와 연결해야 한다.
MarkLogic의 HTTP 서버 구축과 REST-AAPI 설정을 진행한다.웹 브라우저를 통해 액세스하는 관리 화면에 를 설정합니다.

MarkLogic 관리 화면에 HTTP 서버 구축


웹 브라우저를 통해 MarkLogic의 관리 화면(이 서버의 8001번 포트)에 액세스하여 로그인합니다.
로그인한 후 화면 왼쪽 창의 Configure - Groups - Default - App Servers 를 클릭하고 오른쪽 창의 Create HTTP 탭을 클릭합니다.화면에서 HTTP 서버를 설정합니다.

이번 설정은 다음과 같다.다음 항목 이외에는 초기값입니다.
입력이 끝난 후 "ok"단추를 누르십시오.
프로젝트 이름
값 설정
server name
IoTDatabase-HTTP-8100
root
/(슬래시)
port
8100
database
IoTDatabase
url rewriter
/MarkLogic/rest-api/8000-rewriter.xml
rewrite resolves globally
true
그러면 MarkLogic의 HTTP 서버가 준비됩니다.
HTTP 서버는 포트 8100을 입력하여 액세스합니다.
연결할 DB는 데이터베이스 를 통해 선택됩니다.이번 연결은 어제 제작된 IoTDatabase입니다.

MarkLogic Node.js Client API 설치


다음은 노드입니다.js 응용 프로그램에서 MarkLogic에 연결할 때 사용하는 클라이언트 API를 설치합니다.
$ npm install --save marklogic

바로,Hello,World


이상 준비됐습니다.소통을 확인하는 동시에 간단한 JSON 문서를 MarkLogic에서 Node에 로그인합니다.js 프로그램을 만들어 보세요.

연결 정보 생성


먼저 MarkLogic에 대한 연결 정보를 정의하는 파일을 만듭니다.
MarkLogic의 연결 정보로서 Node입니다.js 프로그램을 사용하여 이 파일을 불러옵니다.
my-connection.js
module.exports = {
  connInfo: {
    host: 'localhost',
    port: 8100,
    user: 'user',
    password: 'password'
  }
};
host Mark Logic 서버의 호스트 이름과 IP 주소를 입력합니다.
port연결할 MarkLogic의 HTTP 서버에 대한 포트 번호를 입력합니다.이번에는 위에서 제작한 IoTDatabse용 HTTP 서버입니다.

MarkLogic의 노드에 로그인합니다.js 응용 프로그램 만들기


간단한 JSON 문서를 만들고 프로그램을 읽어 보십시오.
helloworld.js
const async = require('async');
const marklogic = require('marklogic');
const my = require('./my-connection.js');
const db = marklogic.createDatabaseClient(my.connInfo);

// 登録するJSONドキュメント
let document = [
  { uri:'/helloworld_node.json',
    content: {
      message: 'Hello, World!'
    }
  }
];

// JSONドキュメントの書き込みと読み込み
(async function() {
  try{
    let resultUri = await writeDocument(document);
    console.log('----');
    console.log('Inserted to the following URI: ' + resultUri);

    console.log('----');
    console.log('Read the document.');
    readDocument(resultUri);
  } catch( error ){
    console.log(error);
  }
})();

// JSONドキュンメントの登録と結果確認
function writeDocument(documents) {
  return new Promise((resolve, reject) => {
    db.documents.write(documents).result(
      function(response) {
        response.documents.forEach( function(document) {
          resolve(document.uri);
        });
      },
      function(error) {
        let errorMsg = JSON.stringify(error, null, 2);
        reject(errorMsg);
      });
  }); 
}

// JSONドキュンメントの読み込み
function readDocument(documentUri){
  db.documents.read(documentUri).result(
    function(documents) {
      documents.forEach(function(document) {
        console.log(JSON.stringify(document));
      });
    }, function(error) {
      console.log(JSON.stringify(error, null, 2));
    }
  );
}
Node.js로 실행합니다.
$ node helloworld.js

----
Inserted to the following URI: /helloworld_node.json
----
Read the document.
{"content":{"message":"Hello, World!"},"uri":"/helloworld_node.json","category":["content"],"format":"json","contentType":"application/json"}
이상에서 JSON 문서의 로그인 및 읽기에 성공했습니다.

끝맺다


이상, Node.나는 js 응용 프로그램에서 MarkLogic을 이용하는 방법을 썼다.
이번에는 로그인과 참조만 실시했습니다. 물론 검색, 업데이트, 삭제는Javascript로 할 수 있습니다.
이번 등록 처리를 조금 가공하면 웹 덮어쓰기에도 적용할 수 있습니다.
다양한 패턴의 다양한 오픈 데이터를 마크 로직에 복제함으로써 다양한 종류의 데이터와 관련된 애플리케이션을 쉽게 개발할 수 있다.
어제 마크 로직 설치부터 여기까지 익숙해지면 30분이면 돼.
비즈니스 DB지만 마크 로직의 매력 중 하나는 쉽고 빠르게 개발할 수 있다는 것이다.

다음 회 예고


Raspberry Pi3의 센서 정보를 MarkLogic에 가져오기 위해 MQTT를 가져오려고 합니다.

좋은 웹페이지 즐겨찾기