Node-persist - Local Storage trên Server
Để lưu trữ dữ liệu tạm thời thì trong Javascript HTML5 có khái niệm LocalStorage và SessionStorage, còn trong PHP thì có khái niệm session. Vậy trong NodeJS có cách nào để lưu trữ dữ liệu tạm thời hay không? Có đấy các bạn, chúng ta sẽ sử dụng module node-persist để lưu trữ dữ liệu tạm thời trên Server (không lưu trong hệ quản trị CSDL mà lưu file và bộ nhớ).
1. Module node-persist là gì?
Node-persist
là một Module được xây dựng dành cho NodeJS, đây là Module có công dụng tương tự như LocalStorage trong HTML5 và Sesion trong PHP. Node-persist
không sử dụng database để lưu trữ dữ liệu mà thay vào đó nó sẽ lưu vào một file trong hệ thống hoặc trong bộ nhớ với nội dung là chuỗi JSON hoặc file (có tên theo key).
Vì dữ liệu lưu trữ trong bộ nhớ RAM hoặc ổ đĩa (disk) nên tốc độ xử lý dữ liệu lưu trữ của node-persist
không kém phần lưu trữ trong database. Node-persist
sử dụng phương thức localStorage trong HTML5 nên việc tiếp xúc nó rất dễ dàng.
2. Cài đặt node-persist
Ở bài trước chúng ta đã thực hành cài đặt rồi, nhưng để cho trọn bài thì trong bài này mình sẽ hướng dẫn cài đặt lại để những bạn chưa biết có thể xem trực tiếp trong bài này luôn.
Bài viết này được đăng tại [free tuts .net]
Để cài đặt Node-persists
thì bạn mở NodeJS Command Prompt lên và cd
tới thư mục project D:/nodejs-freetuts/localstorage
rồi nhập vào đoạn mã sau:
npm install node-persist@0.0.8 --save
Sau đó bạn vào thư mục node_modules
thì sẽ thấy nó đã được donwload về, đồng thời bạn mở file package.json
lên thì thấy dữ liệu file này cũng đã được cập nhật (xem lại bài trước).
3. Cách sử dụng node-persist
Sau đây là các hàm được tích hợp sẵn trong node-persist
mà bạn có thể sử dụng.
Trước khi sử dụng một module nào thì bạn phải sử dụng hàm require để tạo đối tượng module đó.
var storage = require('node-persist');
Hàm khởi tạo:
Trước khi sử dụng thì ta phải thiết lập hàm khởi tạo để nó load tất cả các key lưu trữ trong ở cứng.
storage.initSync(); // hoặc storage.init().then(promise);
Hàm khởi tạo này sẽ có một tham số truyền vào ở dạng Object, trong đó có nhiều key và bạn cần chú ý đến 2 key như sau:
storage.init({ dir : "path/to/save", ttl : false }); storage.initSync({ dir : "path/to/save", ttl : false });
Trong đó key dir
là đường dẫn lưu trữ dữ liệu. Nếu bạn không thiết lập thì nó sẽ lưu vào đường dẫn như sau: node-modules/node-persist/storage/persist
. Còn nếu bạn thiết lập thì nó sẽ lưu vào đường dẫn node-modules/node-persist/storage/duong_dan
Còn ttl
(time to live) là thời gian sống của dữ liệu, nếu thiết lập false thì nó sẽ sống vĩnh viễn.
Đối với hàm init()
thì tất cả những phần xử lý có sử dụng các hàm của node-persist
đều phải đặt trong promise nhé, nếu không sẽ bị lỗi ngay.
storage.init().then(function(){ // Gọi các hàm setItem, getItem });
Lưu ý:
- Hàm nào có chữ sync tức là đồng bộ, còn không có chữ sync là bất động bộ
- Khi bạn khởi tạo bằng hàm init() thì các hàm còn lại phải sử dụng không Sync, còn khi bạn sử dụng initSync() thì các hàm còn lại phải sử dụng có Sync. Điều này có nghĩa là khởi tạo hàm nào thì các hàm còn lại phải dùng ở chế độ tương tự.
- Nếu thiết lập dạng Sync thì dữ liệu sẽ lưu trên disk, vì vậy bạn có thể sử dụng ở các request tiếp theo.
- Nếu thiết lập dạng không Sync thì dữ liệu sống trong request đó thôi.
Hàm get:
Hàm get dùng để lấy giá trị của một key nào đó, nếu key không tồn tại thì nó sẽ trả về undefined.
storage.getItem('domain'); // hoặc storage.getItemSync('domain');
Hàm set:
Hàm set dùng để thiết lập giá trị cho một key nào đó.
storage.setItem('domain', 'freetuts'); // hoặc storage.setItemSync('domain', 'freetuts');
Hàm remove:
Hàm remove dùng để xóa một key nào đó.
storage.removeItem('domain'); // hoặc storage.removeItemSync('domain');
Hàm clear:
Hàm clear dùng để xóa tất cả các key trong bộ nhớ và ổ đĩa.
storage.clear(); // hoặc storage.clearSync();
Trên là các hàm thông dung hay sử dụng, vẫn còn khá nhiều hàm nên nếu bạn muốn tìm hiểu thì tham khảo trang này nhé.
4. Thực hành
Xem bài tiếp theo.
5. Lời kết
Thực ra khi tìm hiểu Module này thì sẽ phải tìm hiểu đến khái niệm đồng bộ, bất đồng bộ và Promise. Nhưng vì các bạn mới học cho nên chúng ta tạm thời gác qua vấn đề đó nhé, nếu tìm hiểu ngay bài này thì bạn sẽ điên đầu ngay đấy.
Ok bài này xong, bài tiếp theo chúng ta tìm hiểu về một ví dụ cách sử dụng node-persist để viết chương trình quản lý sinh viên.