NodeJs: Cơ sở dữ liệu đáp ứng nhanh rethinkdb và horizon.io

Khi tạo được server thì client chạy trên browser với js sẽ dễ dàng.

Nhưng tạo 1 server với nodejs sử dụng "@horizon/client" thì có đôi
  chút khác, nhìn chung là về cài đặt.

A. Tạo server A tương tác với rethinkdb sử dụng horizon

Đầu tiên cài đặt "RethinkDB: the open-source database for the realtime web"
  theo: https://www.rethinkdb.com/

(khi cài bạn phải đặt biến môi trường PATH nơi chứa rethinkdb)

Sau đấy cài đặt Horizon với npm: npm install -g horizon



Bạn có được chương trình CLI: Horizon CLI : http://horizon.io/docs/cli/

Tool nhỏ chạy console này tạo nhanh và chạy server A.
Và trang admin cũng đc khởi tạo để trực quan quản lý CSDL
(như kiểu phpMyAdmin tạo giao diện web quản lý MySQL)

Nếu bạn muốn tự tạo server A bằng nodejs:
https://www.npmjs.com/package/@horizon/server là câu trả lời


Tốt nhất là sử dụng Horizon CLI.

Bởi nếu như bản thân Horizon có thay đổi phiên bản, việc cài đặt server
  lại phải thay đổi theo.

Và Horizon gắn bó chặt chẽ với rethinkDB, cách thức 2 bên chạy đc đồng bộ.
Việc tạo server sẽ tự động chạy luôn rethinkDB
(bạn chỉ cần PATH đến thư mục cài rethinkDB để Horizon  biết).



B. Khai thác server A bằng client tĩnh:
Nếu cài đặt A, thư mục .hz tạo ra cho việc config tùy chọn, bạn không thay đổi gì thì: vào
http://localhost:8181, Inspect bằng trình duyệt, bạn sẽ demo đc các api:

  • http://horizon.io/api/horizon/
  • http://horizon.io/api/collection/

//var horizon = Horizon(); horizon.connect(); /*đã có trong file index.html*/
var chat = horizon('messages');
chat.watch().subscribe((docs) => { console.log(docs)  })
var data = function(id){ return {id: id, text: `tao them ${id}`}; };
var a = chat.store(data(1)), b = chat.store(data(2));
a.subscribe(uuid => {
   console.log(uuid);
});
chat.find(5).fetch().subscribe(msg => {
   if(msg) console.log(msg);
   else chat.store(data(5));
});

C. Khai thác server A với nodejs:
NodeJs thực thi đc javascript nhưng nó chạy bên backend nên sẽ nhiều 
  tùy biến hơn cho sản phẩm.

Nhìn chung các lệnh javascript vẫn thế, chỉ lưu ý:

global.WebSocket = require('ws');
const horizonClientLib = require('@horizon/client')
var horizon = new horizonClientLib({host: 'localhost:8181'}); // phải có địa chỉ

horizon.onReady(function() {
var chat = horizon('messages');
var data = function(id){ return {id: id, text: `tao them ${id}`}; };
    var a = chat.store(data(1)), b = chat.store(data(2));
a.subscribe(uuid => {
console.log(uuid);
});
chat.find(5).fetch().subscribe(msg => {
if(msg) console.log(msg);
else chat.store(data(5));
});
//chat.watch().subscribe((docs) => { console.log(docs)  });
});

horizon.connect();


Lưu ý: subscribe cho biết đã thực thi xong

try {
chat.store(data(1)).subscribe(uuid => {
console.log(uuid);
})
}
catch(ex){ console.warn(ex) }

Đấy là demo để bạn nắm cơ bản, hãy TRY HARD nhé

Nhận xét