CĂN BẢN
SERVER
MYSQL
MONGODB
MODULE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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).

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.

Để 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.

Cùng chuyên mục:

Crawl dữ liệu website bằng NodeJS cơ bản

Crawl dữ liệu website bằng NodeJS cơ bản

CORS là gì ? Xử lý CORS trong NodeJS

CORS là gì ? Xử lý CORS trong NodeJS

Chắc hẳn trong quá trình xử lý các request tới server thì một vài trường…

Xử lý form trong Express

Xử lý form trong Express

Xây dựng URL trong Express

Xây dựng URL trong Express

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về cách xây…

Populate trong Mongoose

Populate trong Mongoose

Error Handling & Debugging trong Socket.io

Error Handling & Debugging trong Socket.io

Namespaces & Rooms trong Socket.io

Namespaces & Rooms trong Socket.io

Middleware trong Mongoose

Middleware trong Mongoose

Create / Read / Update / Delete trong Mongoose

Create / Read / Update / Delete trong Mongoose

Validation trong Mongoose

Validation trong Mongoose

Subdocuments trong Mongooose

Subdocuments trong Mongooose

Documents trong Mongoose

Documents trong Mongoose

Trong bài viết này chúng ta sẽ tìm hiểu về documents trong Mongoose

Models trong Mongoose

Models trong Mongoose

SchemaTypes trong Mongoose

SchemaTypes trong Mongoose

Schemas trong Mongoose

Schemas trong Mongoose

Mongoose trong NodeJS

Mongoose trong NodeJS

Làm việc với Table MySQL sử dụng Nodejs

Làm việc với Table MySQL sử dụng Nodejs

Kết nối với MongoDB trong NodeJS

Kết nối với MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Top