Lowdb giải pháp cho việc sử dụng database nhỏ gọn cho các pet project với Nodejs, Electron.

Tram Ho

Hi các bạn, hôm nay mình xin giới thiệu tới các bạn một món hàng rất tiện dụng khi làm pet project bằng nodejs, đó là lowdb.

Khái niệm

lowdb là gì: là một JSON database nhỏ cho các ứng dụng node, electron or browser, đơn giản hơn thì lowdb cho phép bạn lưu database dạng JSON dưới dạng file hoặc cũng có thể là localstorage.

lowdb có đặc điểm gì: nó được cung cấp bởi lodash, nên nếu bạn đã làm quen với lodash thì việc sử dụng lowdb cũng cực kì dễ dàng, đồng thời lowdb cũng cho phép bạn custom adapter(mình ít sử dụng cái này) hoặc encrypt data

Cách sử dụng lowdb

Khởi tạo lowdb

Với các ứng dụng node/electron: npm install lowdb or yarn add lowdb

Hoặc browser:

Tạo file db.js nội dung như sau:

Một file database.json sẽ được tạo cho bạn ngay tại thư mục root, muốn thay đổi đường dẫn sang một thư mục khác bạn chỉ cần sửa đoạn code sau:

new FileSync('database.json') => new FileSync('folder-name/database.json')

Lưu ý: ở đây chúng ta sử dụng JSON files để lưu, bạn cũng có thể sử dụng localStorage để thay thế cho FileSync adapter

lowdb đã sẵn sàng để sử dụng.

Bắt đầu với CRUD nào

Thêm một bài viết mới:

Lấy tất cả bài viết:

Lấy một bài viết:

Update bài viết thành public

Xóa bài viết:

Rồi, xem nó còn có gì hay ho hơn CRUD không?

Kiểm tra có bài viết nào hay không

Lấy 5 bài viết và sort bài viết theo lượt view

Đếm tổng số bài viết:

Xóa một property của bài viết:

Ồ, đến đây bạn có thể nhận ra, nếu đánh số ID như mình viết thì có lẽ khá củ chuối, vì vậy bạn có 2 lựa chọn khác để thay thế cho việc tự increment id bằng cách cộng 1 cho id cuối cùng bằng việc sử dụng shortid hoặc lodash-id.

Ví dụ: sử dụng shortid
Sau khi install bạn cần import vào chỗ tạo bài viết trước

Ta sẽ thay thế đoạn create post như sau:

Lấy bài viết bạn vừa thêm dựa vào id của bài bạn vừa tạo:

Lưu ý khi sử dụng lowdb

  • database lưu dưới dạng file JSON nên khi file quá lớn có thể gặp một số vấn đề
  • dữ liệu trả về là dạng tham chiếu, vì vậy khi bạn lấy danh sách các post rồi thêm một thuộc tính hoặc xóa hoặc làm gì đó thì db cũng sẽ tự update lại vì vậy bạn cần sử dụng .cloneDeep() để tránh việc này xảy ra khi không cần thiết

Ví dụ:

Lúc mình dùng bị sai mà mình không biết vì không đọc kĩ đoạn này, mình đã fix bằng cách clone từ data mà mình đã lấy ra, đúng là luôn cần đọc kĩ hướng dẫn trước khi dùng mà

Kết

Qua bài viết mình muốn giới thiệu sơ qua về lowdb một công cụ giúp việc thực hiện pet project hoặc các thử nghiệm một cái gì đó mới trong project của các bạn mà không mất công cài cắm, config db dài dòng.

Còn rất nhiều tính năng thú vị mà mình cũng chưa thử hết và cũng khó để viết hết vì khá là dài nên mình tạm giới thiệu qua các tính năng cơ bản mà bạn có thể dùng với lowdb.

Git repo của lowdb: https://github.com/typicode/lowdb

Thank for your time, bro (☞゚ヮ゚)☞

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo