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

На первый взгляд эта технология показалась мне очень крутой - записи могут сами синхронизироваться между клиентом и сервером, пока нет интернета данные буферизируется и при появлении сети сливаются в центральную бд и наоборот.
Но представьте, что работа идёт с данными календаря, которые у каждого пользователя свои и они секьюрные, т.е. по идее PouchDB будет делать копию всех данных на всех клиентах?! Да, можно применить фильтрацию к репликации, но ведь она то же прописывается на клиенте!
Можно ли фильтровать реплику (сервер -> клиент) для конкретного пользователя вне клиента?
  • Вопрос задан
  • 719 просмотров
Пригласить эксперта
Ответы на вопрос 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. Лучше разделять данные пользователей по базам данных
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы