我正在尝试在javascript中配置index.js文件,以用于Firebase iOS的推送通知。这是我有问题的代码:
exports.newsFRA = functions.database
.ref('news/FRA/{uid}')
.onCreate((snapshot, context) => {
let newsItemFRA = snapshot.val()
sendNotificationFRA(newsItemFRA)
})
function sendNotificationFRA(newsItemFRA) {
let title = newsItemFRA.title
let message = newsItemFRA.message
let payload = {
notification: {
title: 'FRA News',
body: title,
sound: 'default'
}
}
console.log(payload)
let topic = 'FRA'
admin.messaging().sendToTopic(topic, payload)
}
exports.newsLHR = functions.database
.ref('news/LHR/{uid}')
.onCreate((snapshot, context) => {
let newsItemLHR = snapshot.val()
sendNotificationLHR(newsItemLHR)
})
function sendNotificationLHR(newsItemLHR) {
let title = newsItemLHR.title
let message = newsItemLHR.message
let payload = {
notification: {
title: 'LHR News',
body: title,
sound: 'default'
}
}
console.log(payload)
let topic = 'LHR'
admin.messaging().sendToTopic(topic, payload)
}
两个功能相同,主题和匹配名称是什么变化。我有21个相同的。 我相信,通过在Firebase中检测经过身份验证的当前用户子级(称为“ base”)的内容,并使用值(FRA,CDG,ORD等)定义主题,可以找到一种更好的方法。因此,我不必为每个可用基重复相同的功能。 希望我不要太困惑,我非常感谢您的帮助。谢谢
答案 0 :(得分:1)
您可以使用多个通配符,并使用参数的值来确定要执行的操作。例如,这是有效的:
exports.news = functions.database
.ref('news/{x}/{uid}')
.onCreate((snapshot, context) => {
const x = context.params.x
let newsItem = snapshot.val()
sendNotification(x, newsItem)
})