npm install @sap/hana-client --save
var express = require('express');
var router = express.Router();
// HANA Clientライブラリを読込み
var hana = require('@sap/hana-client');
var conn = hana.createConnection();
// HANA接続用パラメーターを設定
var conn_params = {
serverNode : <ホスト名>.dbaas.ondemand.com:<ポート番号>,
encrypt : true,
schema : <スキーマ名>,
uid : <ユーザーID>,
pwd : <パスワード>
};
// 検索機能が呼ばれた際に実行されるGetメソッド
router.get('/api/search', function(req, res, next){
// 検索キーワードをreqパラメーターから取得
var word = req.query.search;
// HANAに接続
conn.connect(conn_params, function(err) {
if (err) {
console.log("DB Error: DB Connection --- ", err);
var msg = [{msg: "DB Error: DB Connection"}];
res.json({searchResult: msg});
return;
}
var sql = 'SELECT * FROM "' + conn_params.schema + '"."<テーブル名>" WHERE CONTAINS (*, ?);';
var stmt = conn.prepare(sql);
// クエリー実行。結果はresultで取得
stmt.exec([word], function (err, result) {
if (err) {
console.log("DB Error: SQL Execution --- ", err);
}
stmt.drop();
conn.disconnect();
if (Object.keys(result).length == 0){
var msg = [{msg: "No items found."}];
res.json({searchResult: msg});
return;
}
// クエリーの実行結果をJSON形式で返す
res.json({searchResult: result});
});
});
});
var conn_params = {
serverNode : <ホスト名>.dbaas.ondemand.com:<ポート番号>,
encrypt : true,
schema : <スキーマ名>,
uid : <ユーザーID>,
pwd : <パスワード>
};
if (process.env.VCAP_SERVICES){
// Cloud Foundryでの実行時に利用
var vcap_services = JSON.parse(process.env.VCAP_SERVICES);
var conn_params = {
serverNode : vcap_services.hana[0].credentials.host + ":" + vcap_services.hana[0].credentials.port,
encrypt : true,
schema : vcap_services.hana[0].credentials.schema,
sslValidateCertificate: false,
uid : vcap_services.hana[0].credentials.user,
pwd : vcap_services.hana[0].credentials.password
};
} else {
// ローカル環境での実行時に利用。
var conn_params = {
serverNode : <ホスト名>.dbaas.ondemand.com:<ポート番号>,
encrypt : true,
schema : <スキーマ名>,
uid : <ユーザーID>,
pwd : <パスワード>
};
}
"Cannot create SSL context: SSL trust store cannot be found: /home/vcap/.ssl/trust.pem"
var sql = 'SELECT * FROM "' + conn_params.schema + '"."<テーブル名>" WHERE CONTAINS (*, ?);';
stmt.exec([word], function (err, result) {
res.json({searchResult: result});
// 画面の検索ボックスの入力内容を取得
var word = $("#searchBox").val();
// Node.js側で定義したデータ取得用のGetメソッドのエンドポイントを設定
var url = "./search/api/search?search=" + word;
// JQueryのJSONデータ取得メソッドを実行
$.getJSON(url, function(data){
var dataSet = new Array;
var i = 0;
// データ取得結果を配列に格納
$(data.searchResult).each(function(){
dataSet[i] = new Array(this.faqId, this.score, this.category, this.serviceNameS, this.question, this.regDate, this.views);
i++;
});
// dataTableというテーブル用のライブラリに、配列データを格納
if(dataSet.length != 0){
$("#faqList").dataTable().fnAddData(dataSet);
}
});
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
10 | |
10 | |
9 | |
8 | |
8 | |
6 | |
6 | |
5 | |
5 |