这里,我有代码,只要添加了孩子,它将触发ref /tugas_course/{course_id}/{tugas_id}
来向Android设备发送通知。它已经做得很好。但是我想在其中添加一个函数,我想在这个引用之外添加子元素flag_tugas
,并将其填充为flag_tugas-course_id-tugas_id-user.uid: "o"
。我不知道如何添加它,因为返回值已经包含所有内容以及如何在云函数中获取用户ID。
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);
})
});
}
非常感谢您的宝贵时间和答复。
答案 0 :(得分:2)
我不确定是否要完全了解要在节点树中的时间戳记中添加时间戳的位置(在/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
})