Javascript Firebase部署-统计数据库中的项目并分配
我正在制作一个iOS应用程序,现在我遇到了这个问题 我想计算数据库中未读邮件的数量,并将其分配到不同的数据库闭包中。如下图所示Javascript Firebase部署-统计数据库中的项目并分配,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在制作一个iOS应用程序,现在我遇到了这个问题 我想计算数据库中未读邮件的数量,并将其分配到不同的数据库闭包中。如下图所示 exports.arrivalNotifications = functions.database.ref('/trips/{tripId}') .onCreate((snap, context) => { const data = snap.val(); const uid = data.uid; va
exports.arrivalNotifications = functions.database.ref('/trips/{tripId}')
.onCreate((snap, context) => {
const data = snap.val();
const uid = data.uid;
var counter = 0
admin.database().ref('/messages/').on('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childData = childSnapshot.val();
if (childData.read === false) {
counter += 1
}
});
})
return admin.database().ref('/users/' + uid).once('value', snapshot => {
const data = snapshot.val();
const username = data.username
var payload = {
notification: {
title: username ' has ' + counter + " unread message.",
body: 'Press for more'
}
}
admin.messaging().sendToDevice(toUser.fcmToken, payload)
.then(function(response) {
console.log("Successfully sent message:", response);
return null;
})
.catch(function(error) {
console.log("Error sending message:", error);
});
})
})
所以我想在有效载荷中使用计数器,但我找不到方法。我不熟悉JavaScript,因此如果有人能帮助我,我将不胜感激。我将编写您的云函数,如下所示。请注意,我无法测试它,它可能需要一些微调/调试。。。特别是因为它意味着要把几个承诺连在一起
exports.arrivalNotifications = functions.database.ref('/trips/{tripId}').onCreate((snap, context) => {
const data = snap.val();
const uid = data.uid;
let counter = 0;
return admin.database().ref('/messages/').once('value')
.then(snapshot => {
snapshot.forEach(function (childSnapshot) {
const childData = childSnapshot.val();
if (childData.read === false) {
counter += 1;
}
});
return admin.database().ref('/users/' + uid).once('value');
})
.then(snapshot => {
const data = snapshot.val();
const username = data.username;
const payload = {
notification: {
title: username + ' has ' + counter + ' unread message.',
body: 'Press for more'
}
};
return admin.messaging().sendToDevice(toUser.fcmToken, payload);
})
.then(response => {
console.log("Successfully sent message:", response);
return null;
})
.catch(error => {
console.log("Error sending message:", error);
});
});
如果您是JavaScript新手,那么Firebase的云函数并不是学习它的最佳方式。我建议您先阅读和/或参加考试。它们涵盖了许多基本的JavaScript、Web和Firebase交互。您还可以在local Node.js进程中使用Admin SDK,该进程可以使用本地调试器进行调试。在这些之后,你也可以更好地为云函数编写代码。你说得对。但是在一些帮助下,我能够做我想做的事情。无论如何,谢谢你的建议!