2016-01-11 2 views
0

У меня есть около 50 документов в моей сумке DB. Я запрашиваю базу данных, пока загружается угловая служба. Я знаю, что мы можем использовать метод alldocs, который намного быстрее, чем метод запроса. Но в моем случае allDocs не достаточно, потому что каждый документ будет иметь lastUpdatedTime в миллисекундах. Основываясь на lastUpdatedTime, я буду запрашивать БД, чтобы получить новую сортировку записей по lastUpdatedTime. Но метод alldocs не имеет возможности сортировать документы на основе зарегистрированного документа. Мой дизайн док-то вроде этого var byTimestampDoc = this.createDesignDoc('by_timestamp', function (doc) { if (doc.objType == "message") { emit(doc.lastUpdated); } }); db.put(byTimestampDoc)pouchdb.query занимает больше времени


Сейчас запрос принимает около 9781.726ms для возврата строки при загрузке приложения в Android, но в прошивкой он занимает менее 3 секунд. Может ли кто-нибудь помочь мне улучшить производительность.

ответ

1

Если вы хотите узнать, какие документы были недавно обновлены, вы можете использовать встроенный API changes() (docs here), который так же быстро, как и allDocs().

Запросы, как правило, медленно, потому что 1) функция map() должна работать для каждый документ в базе данных (например, документы, в которых objType не 'message',), и 2) он только обновления в данный момент вы query() Это.

Так что если у вас есть база данных с часто меняющимися документами, каждый query() читает каждый измененный документ с момента последнего query() d, поэтому он медленный.

+0

Но тот же код выполняется довольно быстро в iOS. – Krishna

+0

Если я использую метод allDocs, чтобы получить записи в моем контроллере, а затем после этого, если я буду сортировать эти записи программно на основе lastUpdatedTime, у него будет какая-либо проблема с производительностью, чем query(). Если я загружаю записи с помощью allDocs с моего контроллера, это занимает меньше времени. Но тот же код, если я нахожу внутри службы, которая требует времени. – Krishna

+0

Если вы выполняете сортировку в памяти, тогда вы читаете всю базу данных, чтобы отсортировать ее. Это может быть быстрее, если ваши данные постоянно меняются, но в этом случае я бы спросил, имеет ли смысл использовать PouchDB, или если вы должны просто хранить все свои объекты в памяти, а затем сохранять их как один большой кусок JSON для LocalForage , Может иметь смысл. – nlawson

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