Tìm hiểu về TaffyDB - 1 thư viện mã nguồn mở và mang các tính năng của CSDL vào trong ứng dụng javascript

Hôm nay mình sẽ giới thiệu cho các bạn 1 thư viện javascript cho phép chúng ta có thể ứng dụng các tính năng của database vào trong 1 ứng dụng javascript. Và đó chính là TaffyDB.

I. Tổng quan

1. Điều gì làm nên sức mạnh của TaffyDB

  • Kích thức file nhỏ gọn và truy vấn cực kỳ nhanh.
  • Lấy cảm hứng từ các tính năng của database chẳng hạn như count, update, insert.
  • Dễ dàng mở rộng với các hàm của chính bạn.
  • Tương thích với bất cứ thư viện DOM nào (JQuery, YUI, Dojo, ...).
  • Tương thích với ServerSide JS

2. Cấu trúc và sơ lược 1 vài tính năng của TaffyDB

a. Tạo 1 database

var students = TAFFY([
    {
        "id": 1, "name": "Nguyen Van A", "city": "Hà Nội", "math": 9, "physical": 7, "chemistry": 10
    },
    {
        "id": 2, "name": "Nguyen Van B", "city": "Hà Nội", "math": 9, "physical": 7, "chemistry": 10
    }
]);

b. Tìm kiếm theo 1 trường trong database

//Tìm tất cả các sinh viên ở Hà Nội
students({city: "Hà Nội"});

//Tìm 1 sinh viên khi biết ID
students({id: 1});

c. Truy cập dữ liệu

//Lấy dữ liệu từ 1 bản ghi khi biết ID
var student = students({id: 1}).first();

//Lấy ra tên của student
var name = student.name;

//Lấy ra 1 danh sách tất cả các ID có trong database.
var ids = students.select("id");

//Lấy ra các thành phố không trùng lặp
var cities = students.distinct("city");

d. Thay đổi dữ liệu trong database

//Cập nhật lại thành phố của student Nguyên Van A
students({name: "Nguyen Van A"}).update({city: "Sai Gon"});

//Loại bỏ student có id = 2
students({id: 2}).remove();

//Thêm 1 student mới.
students.insert({"id": 3, "name": "Nguyen Van C", "city": "Ha Noi", "math": 10, "chemistry": 9, "physical": 8});

II. Các truy vấn query mà TaffyDB cung cấp

1. DB Query db()

  • Một khi bạn có 1 database thì bạn có thể gọi biến của mình như 1 function. Và nó trả về là 1 method collection để có thể làm việc với dữ liệu
var countries = TAFFY([
    {"id": 1, "name": "VietNam", "city": "Ha Noi"},
    {"id": 2, "name": "Singapore", "city": "Singapore"}
]);

countries(); // return all rows

2. DB Methods

a. db.insert()

Dùng để thêm mới 1 bản ghi vào trong CSDL

    countries.insert({"id": 3, "name": "India", "city": "NewDeli"});

b. db.order()

Sắp xếp db theo cột mà bạn muốn sắp xếp.

    countries.order("id"); //sort by id using a logical sort
    countries.order("id asec"); // sort by id ascending
    countries.order("id desc") //sort by id descending

c. db.store()

Dùng để lưu tất cả các bản ghi vào local storage.

    countries.store("id");

d. db().update()

Dùng để cập nhật dữ liệu

    countries().update({city: "Test Update"});

e. db().remove()

Xóa tất cả các bản ghi phù hợp.

    countries().remove();

f. db().filter()

Lọc theo điều kiện

    countries().filter({city:"Ha Noi"});

g. db().limit()

Hạn chế số lượng kết quả trả về.

    countries().limit(1); // Chỉ trả về  1 kết quả đầu tiên

i. db().start()

Bắt đầu lấy từ bản ghi có vị trí là bao nhiêu và được dùng cho offset và paging

    countries().start(2);

j. db().each()

Dùng để chạy 1 hoặc nhiều function một lúc cho mỗi bản ghi trong truy vấn.

    countries().each(function (record, recordnumber) {
        alert(record["id"]);
    });

k. db().first()

Trả lại bản ghi đầu tiên trong kết quả trả về

    countries().first();

l. db().last()

Trả lại bản ghi cuối cùng trong kết quả trả về

    countries().last();

m. db().sum()

Trả lại tổng của 1 cột được truyền vào

    var prices = TAFFY([
        {"id": 1, "name": "apple", "price": 10},
        {"id": 2, "name": "orange", "price": 60},
        {"id": 3, "name": "bannana", "price": 30},
    ]);

    prices().sum("price");

n. db().min()

Trả lại giá trị nhỏ nhất của 1 cột truyền vào.

    prices().min("price");

o. db().max()

Trả lại giá trị lớn nhất của 1 cột truyền vào.

    prices().max("price");

Hy vọng qua bài viết này bạn sẽ thấy thích thú hơn nữa về javascript. Nếu muốn tìm hiểu thêm bạn có thể vào trang link dưới đây để tham khảo. Nguồn tham khảo tại web site của taffydb.com Cảm ơn các bạn đã theo dõi bài viết này.