【发布时间】:2019-01-23 10:56:35
【问题描述】:
我正在为我的大学小项目开发一个 android 应用程序项目。一切正常,但现在我想添加一个通知功能,即每当管理员发布通知时,该主题的每个用户订阅者都会收到通知,我尝试遵循不同的教程和文档,但由于我在 js/nodejs/php 中没有编程背景我无法理解云功能。 任何人都可以编写函数或引导我找到答案吗?
我希望在 /Notice 中添加新通知时触发该功能,并向所有订阅通知的用户发送通知..
经过一番研究,我写了以下代码,
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotices =
functions.database.ref('/Notices/{nID}').onCreate((event) => {const data =
event.data;
if(!data.changed()){
console.log('Nothing changed');
return;
}else{
console.log(data.val());
}
const payLoad = {
notification:{
title: 'Message received',
body: 'You received a new message',
sound: "default"
}
};
const options = {
priority: "high",
timeToLive: 60*60*2
};
return admin.messaging().sendToTopic("bctb", payLoad, options);});
在firebase的控制台中出现错误,我在这里做错了什么, TypeError:无法读取未定义的属性“已更改” 在exports.sendNotices.functions.database.ref.onCreate (/user_code/index.js:8:13) 在 cloudFunctionNewSignature (/user_code/node_modules/firebase- 函数/lib/cloud-functions.js:105:23) 在 cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud- 函数.js:135:20) 在 /var/tmp/worker/worker.js:770:24 在 process._tickDomainCallback (internal/process/next_tick.js:135:7)
【问题讨论】:
-
Cloud Functions 的整体理念是您可以自己创建此类功能。如果您是 JavaScript 新手,Cloud Functions for Firebase 并不是学习它的最佳方式。我建议先阅读Firebase documentation for Web developers 和/或阅读Firebase codelab for Web developer。它们涵盖了许多基本的 JavaScript、Web 和 Firebase 交互。完成这些之后,您将能够更好地为 Cloud Functions 编写代码。
标签: firebase firebase-realtime-database google-cloud-functions