这是我第一次将Cloud Functions用于Firebase和Node.js,所以
我不知道为什么我在 Firebase 控制台上看不到任何日志。
至少,我已经成功部署了下面的函数
'use strict';
const functions = require('firebase-functions');
//import admin module
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
/* Listens for new messages added to events and sends a notification to
subscribed users */
exports.pushNotification =
functions.database.ref('/events/{pushId}').onWrite( event => {
console.log('Push notification event triggered');
/* Grab the current value of what was written to the Realtime Database
*/
var valueObject = event.data.val();
/* Create a notification and data payload. They contain the
notification information, and message to be sent respectively */
const payload = {
data: {
eventType: valueObject.eventType,
receiver: valueObject.receiver,
requester: valueObject.requester
}
};
/* Create an options object that contains the time to live for the
notification and the priority. */
const options = {
priority: "high",
timeToLive: 60 * 60 * 24 //24 hours
};
return admin.messaging().sendToTopic(valueObject.receiver, payload,
options).then(function (response) {
console.log("Successfully sent message:", response);
})
.catch(function (error) {
console.log("Error sending message:", error);
});
});
但是,即使我将一些数据写入"事件"数据库,我也无法在Firebase控制台上看到任何日志消息。 这是否意味着根本没有触发此功能?
如果有人能提出这个问题的原因,我将不胜感激。
如果您在控制台中正确设置了应用程序,那么在触发函数时没有理由不进行日志记录。
这使您有可能没有启动该功能。一个可能的原因是数据没有在函数中提供的路径上写入。
那么,您是向/events
(例如'true'
或'ABC'
(添加一个值,还是向其添加子值(例如{'ABC' = true}
(? 在.ref(/events/{pushId})
的情况下,函数将在后一种情况下调用,而不是在前一种情况下调用。