2015-09-20 3 views
0

Я создал приложение, которое сохраняет записи в локальном хранилище.Рефакторинг локального хранилища в PouchDB

Я только недавно понял, что по дизайну я забиваю CPU, блокируя DOM, поскольку я читаю множество записей из одного ключа, используя ng-repeat.

Моя идея - перейти на PouchDB, но я думаю, что мне не хватает некоторых концепций.

Сейчас моя структура данных выглядит следующим образом:

  • Key (автомобили) - Value (objectCar1 - objectCar2 - objectCar3 ...)
  • Key (драйвер) - Значение (objectDriver1 - objectDriver2 - objectDriver3 ...) -
  • Key (записей) - Значение (objectRecord1 - objectRecord2 - objectRecord3 ... до Record70 сейчас начинают создавать проблемы)

Я читал документацию Pouch и CouchDB, и если бы я переключился на PouchDB, тогда мне просто нужно было бросать объекты в БД волей-неволей, а затем перебирать его, ища параметры для фильтрации?

В настоящее время база данных NoSQL выглядит как большой мешок для хранения данных без особого заказа.

Или я что-то упускаю?

ответ

1

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.

1

Вам не хватает нескольких вещей.

Прежде всего, основной трюк основной сумки pouchDB - это репликация с couchDB. Если вы не используете это, вы могли бы быть лучше с какой-либо другой оберткой веб-базами данных (например ydn)

С точкой зрения запросов данных, вы могло итерации по всей базе данных. Но более эффективный и простой способ заключается в использовании views или find plugin

+0

В настоящее время он предназначен как автономное приложение, может быть интересно добавить вариант репликации в будущем, хотя ... –

0

Если вы уже используете LocalStorage вы можете посмотреть на https://github.com/mozilla/localForage

+0

Hi Nick! Я видел LocalForage, но я думал, что это прекрасная возможность попасть в «серьезную» базу данных! Спасибо, в любом случае! :) –

Смежные вопросы