База данных Firebase в реальном времени. Создание способа имитации мультитенантного дизайна. - PullRequest
0 голосов
/ 04 июня 2019

Мы создали аналитические приложения, которые будут собирать данные для наших клиентов.Идея состоит в том, чтобы создать узел в базе данных Firebase для каждого клиента и иметь все свои захваченные данные в этом узле.

Эта идея отлично работает для БД в реальном времени, поскольку мы можем добавлять имя клиента во всех операциях с базами данных Firebase со стороны клиента.,

Проблема в функциях Firebase.Например, одна из функций выглядит так:


exports.on_new_message = functions.database.ref(orgName + "/messages/{id}")
    .onCreate(async(snapshot, context) => {
        console.log("start of on_new_message ")   
        const message = snapshot.val();
 })

, в этом случае orgName жестко запрограммировано в данный момент.И мы не уверены, как обобщить это так, чтобы корневой узел не указывался.Для быстрой ссылки данные могут выглядеть следующим образом:

 orgA
   --messages
      ---
      ---
   --stats
     --
     --
 orgB
    --messages
      ---
      ---
   --stats
     --
     --

Если приведенная выше архитектура звучит совершенно глупо, то, пожалуйста, сообщите правильный путь

1 Ответ

1 голос
/ 04 июня 2019

Вы можете иметь несколько подстановочных знаков в пути, см. https://firebase.google.com/docs/reference/functions/functions.database#.ref

Так что вы можете сделать

exports.on_new_message = functions.database.ref("{orgName}/messages/{id}")
    .onCreate(async(snapshot, context) => {
        console.log("start of on_new_message ");   
        const message = snapshot.val();

        const orgName = context.params.orgName;
        const messageId = context.params.id;

        //....     

 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...