Как создать облачную функцию firebase, которая записывает данные на каждый «пользовательский» узел в базе данных firebase в реальном времени - PullRequest
0 голосов
/ 10 июля 2020

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

Структура базы данных:

введите описание изображения здесь

I wi sh, чтобы добавить дополнительные дни к узлу TimeSlots с помощью этой функции

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

var database = admin.database();

exports.addTimeNode = functions.database.ref('/message/{id}').onCreate((snapshot, context) =>
    {
        var root = firebase.database().ref();
        var db = root.child('Users').child('Barbers');
        db.once('value', function(snapshot)
            {
                snapshot.forEach(function(data)
                    {
                        //var reqStatus = data.val().request_status;
                        var uid = data.key;
                        root.child('User').child(uid).child(TimeSlots).once('value', function(userSnapshot)
                            {
                                var now = new Date().toDateString();
                                database.ref('/Users/Barbers/' + uid + '/TimeSlots/'+ now +'/9am').set({
                                    availability: 'Available',
                                    id: '01',
                                    time: '09:00 AM'
                                });
                                database.ref('/Users/Barbers/' + uid + '/TimeSlots/'+ now +'/9:30am').set({
                                    availability: 'Available',
                                    id: '02',
                                    time: '09:30 AM'
                                });
                        ...

1 Ответ

0 голосов
/ 10 июля 2020

Может быть, вы можете попробовать этот способ: кстати, я не большой поклонник использования snapshot.key вместо этого, я добавляю значение UID в сам узел с дочерним узлом с именем id, и он останется ниже firstName узел в вашем случае. Вам не потребуется много времени, чтобы скорректировать свой код, чтобы добавить туда идентификатор вместе с добавлением имени.

const allBarbersSnapshot = await admin.database().ref(`/users/barbers/`).once('value').then(function (snapBarbers: any) {
  snapBarbers.forEach((eachBarber: any) => {
    const currentBarberId = eachBarber.val().id 
    
    admin.database().ref(`/users/barbers//${currentBarberId}/TimeSlots/${now}/${yourTimeVariableHere}`).update({ "availability": 'Available', "id": 1, "time": yourTimeVariableHere })
                
  });
  //Anything after above stuff is done goes here !!!
})

Если у вас есть какие-либо вопросы, оставьте комментарий ниже;)

PS: весь приведенный выше код находится внутри вашей облачной функции

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