Задать вопрос

Как использовать PouchDB в мобильных проектах?

На первый взгляд эта технология показалась мне очень крутой - записи могут сами синхронизироваться между клиентом и сервером, пока нет интернета данные буферизируется и при появлении сети сливаются в центральную бд и наоборот.
Но представьте, что работа идёт с данными календаря, которые у каждого пользователя свои и они секьюрные, т.е. по идее PouchDB будет делать копию всех данных на всех клиентах?! Да, можно применить фильтрацию к репликации, но ведь она то же прописывается на клиенте!
Можно ли фильтровать реплику (сервер -> клиент) для конкретного пользователя вне клиента?
  • Вопрос задан
  • 740 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@TheGhost777
python web dev
Судя по документации, на клиенте создается только ad-hoc filter function.
If you are replicating from a remote CouchDB, then the first method will run client-side, whereas the last four will filter on the server side.


Сам я не использовал PouchDB/CouchDB таким способом, но мне кажется что можно построить фильтрацию которая будет основана на авторизации юзера. В таком случае придется создать по юзеру в CouchDB, на каждого юзера вашей аппликации.
https://pouchdb.com/2015/04/05/filtered-replicatio...

Also, та же документация предлагает способ с отдельной базой для каждого клиента, если вам это подхоит.
You should also beware trying to use filtered replication to enforce security, e.g. to partition a database per user. A better strategy is the “one database per user” method.
Ответ написан
Комментировать
1. Можно фильтровать то, что отдает сервер дизайн документом:
remoteDb = new PouchDB('http://remote.com/db')
remoteDb.put({
"_id": "_desing/my_filter_doc_name",
  "filters": {
    "my_filter_name": "function(doc, req) { return doc.user_id === req.query.user_id }"
  }
})

localDb = new PouchDB('local_db')
localDb.replicate.from(remoteDb, {
   filter: "my_filter_doc_name/my_filter_name",
   query_params: {
     user_id: "xxx"
   }
})


2. Лучше разделять данные пользователей по базам данных
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
22 янв. 2025, в 04:08
6000 руб./за проект
21 янв. 2025, в 23:55
20000 руб./за проект
21 янв. 2025, в 23:35
80000 руб./за проект