Создать коллекцию в конкретной дочерней базе данных

Я работаю над мультитенантной архитектурой с использованием FaunaDB, где у каждой группы пользователей есть выделенная дочерняя база данных.

Я пытаюсь создать коллекцию (Users) внутри дочерней базы данных, в которой сохраняются данные о команде и ее пользователях.

Я использую клиент Javascript Fauna. Следующий код создает коллекцию в базе данных верхнего уровня, а я пытаюсь добавить ее в дочернюю базу данных.

        var user = await faunaClient.query(
          q.Create(
            q.Collection('users'),
            { data: ctx.currentUser }
          )
        )

Как я могу адаптировать его для указания коллекции внутри дочерней базы данных?

Нужно ли мне где-то передавать ссылку на дочернюю базу данных? Или мне следует создать экземпляр нового клиента Fauna с ключом из дочерней базы данных?


person Anas Tiour    schedule 24.03.2020    source источник


Ответы (2)


Если у вас есть ключ администратора родительской базы данных, вы можете получить доступ к дочернему элементу из нового клиента на основе этого секрета. Отформатируйте секрет так admin_secret:child_db_name:role

person Eigil    schedule 27.03.2020
comment
Я подтверждаю! Красиво работает. Надеюсь, это где-то задокументировано, и я надеюсь, что в будущем это изменится, или это наверняка сломает мою настройку - person Anas Tiour; 27.03.2020

Чтобы писать в суббазы данных, вам необходимо использовать ключ, указывающий на эту базу данных, так что да, вам нужен новый клиент Fauna.

person Marrony    schedule 25.03.2020
comment
Спасибо! Поэтому я бы сгенерировал ключ для каждой базы данных клиента / ребенка и сохранил его в коллекции в базе данных верхнего уровня. И каждый раз, когда я хочу получить доступ к рассматриваемой дочерней базе данных, мне нужно будет получить ключ из коллекции верхнего уровня? Есть ли рекомендуемый способ обращения с ключами? - person Anas Tiour; 26.03.2020