2013-05-29 39 views
11

Tôi đang tạo một ứng dụng danh sách công việc phải làm với HTML, CSS và JavaScript, và tôi nghĩ cách tốt nhất để lưu trữ dữ liệu sẽ là cơ sở dữ liệu cục bộ. Tôi biết cách sử dụng localStoragesessionStorage và tôi cũng biết cách sử dụng cơ sở dữ liệu trực tuyến MySQL. Tuy nhiên, ứng dụng này phải có khả năng chạy ngoại tuyến và nên lưu trữ dữ liệu của nó ngoại tuyến.
Có cách nào tôi có thể thực hiện điều này chỉ với HTML và JavaScript không?Cách tạo cơ sở dữ liệu ngoại tuyến cục bộ


Hưởng ứng ý kiến:

"Bạn nói rằng bạn biết làm thế nào để sử dụng localStorage ... vì vậy những gì có vẻ là vấn đề?"

@Lior Tất cả tôi biết về localStorage là bạn có thể lưu trữ một kết quả duy nhất, như là một biến trong khi tôi muốn để lưu trữ một hàng với các cột khác nhau có chứa dữ liệu diffenent về đối tượng. Tuy nhiên, có thể localStorage giữ một đối tượng và nếu nó được tham chiếu với ký hiệu đối tượng thông thường?

Bất kỳ triển khai nào cũng có thể phụ thuộc vào trình duyệt mà người dùng của bạn thích sử dụng.

@paul Tôi nghĩ chrome sẽ phổ biến nhất.


Được rồi, tôi muốn làm rõ rằng tôi đang hỏi là thực sự Làm thế nào tôi có thể làm điều này với JavaScript và HTML hơn Có cách nào tôi có thể làm được điều này chỉ với HTML và JavaScript?. Về cơ bản, tôi muốn có một loại cơ sở dữ liệu SQL sẽ lưu nội dung của nó trên máy của người dùng thay vì trực tuyến.

Điều gì đã giải quyết được vấn đề của tôi là sử dụng WebDB hoặc WEBSQL (tôi nghĩ nó được gọi là cái gì đó tương tự).

+0

Bạn đã nói bạn biết cách sử dụng 'localStorage' ... vậy điều gì có vẻ là vấn đề? –

+0

Bất kỳ triển khai nào cũng có thể phụ thuộc vào trình duyệt mà người dùng của bạn muốn sử dụng. – paul

+0

Với 'localStorage', bạn không thể lưu trữ một đối tượng một cách tự nhiên, nhưng cách để giải quyết vấn đề đó là sử dụng' JSON.stringify' để lưu trữ nó và 'JSON.parse' để truy xuất nó – Ian

Trả lời

8

Tôi trễ khoảng 3 năm để trả lời câu hỏi này, nhưng xem xét rằng không có thảo luận thực sự về các tùy chọn sẵn có tại thời điểm đó và cơ sở dữ liệu OP đã chọn is now deprecated, tôi đã hiểu hai xu cho vấn đề.

Trước tiên, người ta cần phải xem xét liệu một người có thực sự cần một cơ sở dữ liệu phía máy khách hay không. Cụ thể hơn ...

  • Bạn có cần mối quan hệ rõ ràng hoặc tiềm ẩn giữa các mục dữ liệu của mình không?
  • Khả năng truy vấn các mục đã nói như thế nào?
  • Hoặc hơn 5 MB trong không gian?

Nếu bạn trả lời "không" cho tất cả những điều trên, hãy truy cập localStorage và lưu chính mình khỏi những cơn đau đầu là API WebSQL và IndexedDB. Vâng, có lẽ chỉ là đau đầu sau này, vì trước đây đã có, như đã đề cập trước đó, đã không được chấp nhận.

Nếu không, chỉ mục IndexedDB là tùy chọn duy nhất xa như cơ sở dữ liệu phía máy khách gốc, vì nó là duy nhất còn lại trên bản theo tiêu chuẩn W3C.

Kiểm tra BakedGoods nếu bạn muốn sử dụng bất kỳ cơ sở nào trong số này và hơn thế nữa mà không cần phải viết mã hoạt động lưu trữ cấp thấp. Với nó, đặt dữ liệu trong cơ sở dữ liệu bản địa gặp đầu tiên được hỗ trợ trên một khách hàng, ví dụ, là đơn giản như:

bakedGoods.set({ 
    data: [{key: "key1", value: "val1"}, {key: "key2", value: "val2"}], 
    storageTypes: ["indexedDB", "webSQL"], 

    //Will be polyfilled with defaults for equivalent database structures 
    optionsObj: {conductDisjointly: false}, 

    complete: function(byStorageTypeStoredKeysObj, byStorageTypeErrorObj){} 
}); 

Oh, và vì lợi ích của tính minh bạch đầy đủ, BakedGoods được duy trì bởi anh chàng này ngay đây :) .

Các vấn đề liên quan