将本地存储重构为 PouchDB

Refactoring Local Storage to PouchDB

我构建了一个将记录保存在本地存储中的应用程序。

我最近才意识到,在设计上我通过阻止 DOM 来阻止 CPU,因为我正在使用 ng-repeat 从单个键读取大量记录。

我的想法是迁移到 PouchDB,但我想我缺少一些概念。

现在我的数据结构是这样的:

我一直在阅读 Pouch 和 CouchDB 文档,如果我要切换到 PouchDB,那么我只需要随意将对象扔到数据库中,然后遍历它以查找参数以进行过滤?

现在,NoSQL 数据库就像一个大袋子,用来存储没有太多顺序的数据。

还是我遗漏了什么?

你漏掉了几件事。

首先,pouchDB 的主要技巧是使用 couchDB 进行复制。如果你不使用它,你可能最好使用其他一些网络数据库包装器(例如 ydn

就查询数据而言,您可以遍历整个数据库。但更有效和简单的方法是使用 views or the find plugin

如果您已经在使用 localstorage,您可以查看 https://github.com/mozilla/localForage

PouchDB 不是存储数据的大包,但你必须稍微改变一下思维方式才能有效地存储数据。

长话短说,您需要插入如下所示的文档:

{ _id: 'car_<id>', data: ...}
{ _id: 'driver_<id>', data: ...}
{ _id: 'record_<id>', data: ...}

请注意,每个文档的 _id 都以其类型为前缀。

然后高效查询数据,例如要查找所有汽车,您可以查询 db.allDocs({startkey: 'car_', endkey: 'car_\uffff', include_docs: true}).

或者,如果您厌倦了手写这些类型的查询,那么 relational-pouch 会做完全相同的事情,但 API.