Firebase получить конкретный ключ - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть realtime-database со следующей структурой:

-- test-b7a6b
    -- locations
        -- 0
            -- logs
                -- alarm_2a330b56-c1b8-4720-902b-df89b82ae13a                
                ...
            -- devices
            -- deviceTokens
        -- 1
        -- 2

Я использую firebase-functions, который выполняется при записи нового журнала

let functions = require('firebase-functions');
let admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

exports.sendPush = functions.database.ref('/locations/0/logs/{devicelogs}/{logs}').onWrite((change, context) => {
  let logsData = change.after.val();
  loadUsers();
  getBody(deviceTypeId);
  //managing the results
});

У меня есть другие функции, которые я хочу сослаться на то же место, что и та, с новой log

function loadUsers() {
    let dbRef = admin.database().ref('/locations/0/deviceTokens');
    //managing users
}

function getBody(deviceTypeId) {
  let devicesDB = admin.database().ref('/locations/0/devices');
  //managing devices
}  

установка местоположения вручную для всех трех функций делает его работу очень хорошей, но я не знаю, как заставить его прослушивать одно и то же событие во всех местоположениях ( 0, 1 и 2 ) и, возможно, больше мест в будущем

Поэтому мой вопрос: есть ли способ получить ключ местоположения, когда журнал записывается в любое место, чтобы я мог отправить егона другие функции

1 Ответ

0 голосов
/ 20 февраля 2019

Чтобы прослушать все местоположения, используйте параметр в пути, который вызывает функцию:

exports.sendPush = functions.database.ref('/locations/{location}/logs/{devicelogs}/{logs}').onWrite((change, context) => {

Затем вы можете получить параметры из context.params и передать их:

exports.sendPush = functions.database.ref('/locations/{location}/logs/{devicelogs}/{logs}').onWrite((change, context) => {
  let logsData = change.after.val();
  loadUsers(context.params.location);
  getBody(deviceTypeId);
  //managing the results
});

Также см. Документацию Облачные функции для Firebase по обработке данных событий .

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