Добавляйте родительский дочерний элемент всякий раз, когда onchild создает облачную функцию в режиме реального времени - PullRequest
0 голосов
/ 06 октября 2018

Здесь у меня есть код, который вызывает ref /tugas_course/{course_id}/{tugas_id} всякий раз, когда добавленный ребенок отправит уведомление на устройство Android.Это уже хорошо.Но я хочу добавить еще одну функцию внутри него, я хочу добавить дочерний элемент вне этой ссылки, который называется flag_tugas и будет заполнен flag_tugas-course_id-tugas_id-user.uid: "o".Я не знаю, как добавить его, потому что возвращаемое значение уже принимает все и как получить идентификатор пользователя в облачной функции.

export const onNotifTugas = functions.database.ref('/tugas_course/{course_id}/{tugas_id}')
.onCreate((snapshot, context) =>{


    const course_id = context.params.course_id;
    const tugas_id = context.params.tugas_id;

    console.log(`New Message ${course_id} in ${tugas_id}`);

    return admin.database().ref('/tugas/' + tugas_id +'/').once('value').then(snap => {
            const tugasData = snap.val();
            const notifDataSend = { // buat structure data json dgn nama const notifDataSend untul cloud messaging
                data: {
                            data_type: "tugas",
                            title: "Anda mendapatkan notifikasi baru..", // data bebas (key, value)
                            body: `Tugas ${tugasData.nama_tugas} baru`, // chatId = const chatId
                            sound: "default"
                      }
             };

            console.log(`data yang dikirim `);
            return admin.messaging().sendToTopic(course_id, notifDataSend) 

            .then(function(response) {
                console.log("Successfully sent message:", response);
              })
            .catch(function(error) {
                console.log("Error sending message:", error);
              });

    }).catch(error => {
        console.log(error);
    })

});


    }

На самом деле добавление нового дочернего элемента в eclassapp enter image description here

Действительно спасибо за ваше время и ответ ..

1 Ответ

0 голосов
/ 06 октября 2018

Я не уверен, что полностью понимаю, куда вы хотите добавить метку времени в дереве узлов (под /tugas_course/{course_id}/{tugas_id}/new_child или под /tugas_course/{course_id}/{tugas_id}), но следующий код будет работать для добавления значения timestamp прямо под /tugas_course/{course_id}/{tugas_id},Если вам нужно, вы можете изменить значение ref, чтобы записать временную отметку, где вы хотите.

exports.onNotifTugas = functions.database
  .ref('/tugas_course/{course_id}/{tugas_id}')
  .onCreate((snapshot, context) => {
    const ref = snapshot.ref;
    const ts = admin.database.ServerValue.TIMESTAMP;
    return ref.update({
      date_time: ts
    });
  });

Обратите внимание, что вам не нужна облачная функция для добавления временной отметки с сервера, см.https://firebase.google.com/docs/reference/js/firebase.database.ServerValue

Так что в вашем случае вы бы сделали что-то вроде:

var tugaRef = firebase.database().ref("/tugas_course/course_id/tugas_id");
tugaRef.push({
  foo: bar,  //Other data of your 'tugas' object
  createdAt: firebase.database.ServerValue.TIMESTAMP
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...