将数据添加到数据库时,Firebase Function不触发

时间:2018-08-13 13:08:19

标签: javascript firebase google-cloud-firestore

我正在尝试让我的代码在数据库中更新时为另一个用户创建一个通知,但是它似乎没有触发并且日志中什么也没有显示。我可以看到正在写入的数据库中的值。

代码中是否缺少某些内容?我知道路径是正确的。

任何帮助将不胜感激。

Session

编辑:由于我无法在此处添加图像,因此我可以尽其所能描述它。在数据库中,我们有通知。在通知中,当某人尝试添加朋友时,它会使用将接收请求的那个人的user_id填充它。然后在该用户user_id中添加一个随机生成的notification_id,在该部分中它既包含发送请求的用户,又包含通知的类型。下面是一个小图

  • 通知
  • ---> user_id
  • ------> notification_id
  • --------->来自
  • --------->类型

3 个答案:

答案 0 :(得分:1)

函数触发器不应使用模板字符串,而应使用文字字符串:

exports.sendNotification = functions.database.ref("/Notifications/{user_id}/{notification_id}").onWrite((change, context) => {

通过使用模板字符串(带有未定义的变量),您将在/Notifications//上触发,并且context.params集合将为空。

答案 1 :(得分:0)

您的字符串插值给我时看起来像语法错误。

exports.sendNotification = functions.database.ref(`/Notifications/{user_id}/{notification_id}`).onWrite((change, context) => {

应该是

exports.sendNotification = functions.database.ref(`/Notifications/${user_id}/${notification_id}`).onWrite((change, context) => {

答案 2 :(得分:0)

您没有向Firebase验证Admin SDK。

var serviceAccount = require("./your-secret-service-key.json");

//admin.initializeApp();
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://your-project.firebaseio.com"
});