Хорошая точка для создания дизайнерских документов в CouchDb

У меня есть экземпляр CouchDb, на котором запущена конфигурация базы данных peruser.

Сгенерирована каждая пользовательская база данных (когда пользователь добавляется в _users база данных) должны иметь одинаковые проектные документы с логикой представления / списка и т. д.

Как по умолчанию добавить проектные документы в базу данных при ее создании? Просто добавить их после успешного запроса на создание пользователя? Или есть более элегантный способ сделать это в CouchDb?

2 ответа

Решение

Не существует механизма инициализации вновь созданных пользовательских баз данных, вы должны включить его в логику создания пользователя. Если вы хотите отделить создание пользователей и инициализацию БД, я предлагаю вам изучить следующую стратегию

1 - Создайте базу данных шаблонов и поместите в нее свои проектные документы, которые должны применяться к каждому пользователю БД

2 - непрерывное прослушивание конечной точки _db_updates, где будут уведомляться события уровня дБ. Эта библиотека может помочь вам.

3 - Когда создается база данных, соответствующая шаблону имени базы данных пользователя, вы можете запустить репликацию из базы данных шаблонов во вновь созданную базу данных, используя конечную точку _replicate.

Если вы планируете использовать модуль Follow npm, как предложил @Juanjo Rodriguez, рассмотрите возможность использования версии Cloudant. Версия Iriscouch (указанная @Juanjo Rodriguez) устарела. Например, он не поддерживает CouchDB v2.x среди других проблем. Я работал с командой Cloudant, чтобы улучшить все это в эти последние дни, и они только что выпустили обновленный пакет npm вчера здесь: https://www.npmjs.com/package/cloudant-follow?activeTab=versions

0.17.0-SNAPSHOT.47 версия включает в себя патчи, над которыми мы работали, поэтому не используйте 0.16.1 (что официально является последним).

Вы можете прочитать больше о проблемах, которые мы исправили здесь:

https://github.com/cloudant-labs/cloudant-follow/issues/54

https://github.com/cloudant-labs/cloudant-follow/issues/50

https://github.com/cloudant-labs/cloudant-follow/issues/47

Другие вопросы по тегам