2016-04-07 16 views
6

Tôi muốn lưu trữ một danh sách các mục với AsyncStorage. Danh sách sẽ được cập nhật theo thời gian.Lưu trữ danh sách với React Native AsyncStorage: nhiều khóa hoặc một?

Dưới đây là một ví dụ của một quốc gia trong danh sách có thể ở:

[ 
    { 
    name: "Alice", 
    email: "[email protected]" 
    }, 
    { 
    name: "Bob", 
    email: "[email protected]", 
    address: "30 Madison Ave., NY" 
    } 
] 

Bây giờ, có vẻ như có hai tùy chọn để lưu trữ danh sách này:

  1. cửa hàng từng tiếp xúc dưới riêng của mình phím
  2. Lưu toàn bộ danh sách theo một khóa

Có lợi thế cho một trong hai pproach - những gì được ưa thích trong React Native?

+3

Xem xét sử dụng một thư viện cơ sở dữ liệu như [Realm] (https://realm.io/docs/react-native/latest/). Nó có nhiều ưu điểm so với AsyncStorage cho dữ liệu phức tạp hơn khóa/giá trị. – David

Trả lời

4

Tôi nghĩ điều này tùy thuộc vào cách bạn định sử dụng, truy cập và cập nhật dữ liệu. Có một số phương pháp asyncstorage bạn có thể sử dụng để giúp làm cho cả hai trường hợp dễ dàng hơn.

Nếu bạn quyết định đi theo nhiều tuyến đường, hãy xem multiSetmultiGet, cho phép bạn truy xuất một số phím trong một cuộc gọi chức năng duy nhất. Và getAllKeys sẽ giúp bạn tiết kiệm những rắc rối của "giữ [ing] theo dõi tất cả các phím bạn tạo ra", giải quyết cả hai vấn đề được đề cập bởi Fredrick Motte.

Để cập nhật nhiều phím trong một cuộc gọi, hãy xem multiMerge là một phương pháp thực sự mạnh mẽ, tương tự như mergeItem nhưng nhiều khóa cùng một lúc.

Vì vậy, bạn thấy bạn thực sự có thể thực hiện một trong hai tuyến đường. Nếu bạn chia dữ liệu của mình thành nhiều khóa, thì có thể bạn sẽ chỉ muốn dành thời gian làm quen với các phương pháp mà tôi đã đề cập ở trên.

Và đề nghị của David để cung cấp cho Relm một cái nhìn có thể có một số giá trị cho bạn là tốt, một lần nữa ... tùy thuộc vào nhu cầu của bạn.

3

Để dễ sử dụng, tôi sẽ lưu trữ toàn bộ danh sách; kể từ đó bạn không phải theo dõi tất cả các khóa bạn đã tạo cho từng liên hệ riêng lẻ; và tải/lưu chúng sẽ dễ dàng hơn (chỉ cần một cuộc gọi hàm thay vì lặp qua tất cả các liên hệ của bạn).

Nhưng điều này chủ yếu là sở thích cá nhân; không có ràng buộc thực sự đối với bất kỳ phương pháp nào trong hai phương pháp này.

1

Tôi sẽ thêm vào hai câu trả lời hay từ Chris và Frederick: tùy thuộc vào kích thước danh sách của bạn và kích thước tài liệu của bạn.

Đi với một danh sách nói chung dễ quản lý hơn nhiều, nhưng không quy mô (tính toán sẽ nặng hơn với kích thước giá trị toàn cầu của bạn). sẽ có một khóa cho mỗi mục sẽ thêm một số độ phức tạp nhưng tỷ lệ.

Cá nhân tôi bắt đầu với mọi thứ trong một khóa và bây giờ đang tái cấu trúc để có một tài liệu cho mỗi khóa, bởi vì khi tôi xử lý hàng trăm tài liệu lớn, hiệu suất rõ ràng bị suy giảm.

Và nếu bạn đang xử lý hàng nghìn hoặc hàng chục nghìn yếu tố, tôi nghĩ bạn nên tìm một cơ sở dữ liệu thích hợp như sqlite hoặc lĩnh vực (nhưng gỡ lỗi là một vấn đề tại thời điểm này).

sẽ được quan tâm để biết các giới hạn thực sự của asyncStorage, tôi đọc ở đâu đó, đó là một vài MB, trừ khi bạn hỏi trong cấu hình mẹ đẻ của mình để tăng nó

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