当前位置: 首页 > 知识库问答 >
问题:

Firebase函数无法读取未定义的属性“val”

农永宁
2023-03-14

我是Firebase函数的新手,在官方文档中看到了一些变化,但是当我在做一个通知系统时,当我试图获取我的令牌id时,它抛出了这个错误。

我的代码

     'use strict'

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);


/*
 * 'OnWrite' works as 'addValueEventListener' for android. It will fire the function
 * everytime there is some item added, removed or changed from the provided 'database.ref'
 * 'sendNotification' is the name of the function, which can be changed according to
 * your requirement
 */

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


  /*
   * You can store values as variables from the 'database.ref'
   * Just like here, I've done for 'user_id' and 'notification'
   */

  const user_id = context.params.user_id;
  const notification_id = context.params.notification_id;

  console.log('Tenemos una notificacion para mandar a : ', context.params.user_id);

   if(!context.data.val()){

    return console.log('Una notificacion se elimino de la base de datos : ', notification_id);

  }

  const deviceToken = admin.database().ref(`/users/${user_id}/device_token`).once('value');

  return deviceToken.then(result => {

    const token_id = result.val();

      /*
       * We are creating a 'payload' to create a notification to be sent.
       */

    const payload = {
        notification: {
          title : "Tienes un nuevo seguidor !",
          body: "Tu nuevo seguidor es .... ",
          icon: "default"
        }

      };

       /*
       * Then using admin.messaging() we are sending the payload notification to the token_id of
       * the device we retreived.
       */

      return admin.messaging().sendToDevice(token_id, payload).then(response => {

        return console.log('This was the notification Feature');

      });

  });



  });

错误

无法在导出处读取未定义的属性“val”.js user_code。(/user_code/node_modules/火库函数/库/云函数.js:112:27) 在下一个 (本机) 在 /user_code/node_modules/火基函数/库/云函数.js:28:71 在 __awaiter (/user_code/node_modules/火基函数/库/云函数.js:24:12) 在云函数 (/user_code/node_modules/火基函数/库/云函数.js:82:36) 在 /var/tmp/工作线程/工作线程.js:716:24 在process._tickDomainCallback(内部/进程/next_tick.js:135:7)

共有1个答案

壤驷鸿祯
2023-03-14

要测试数据是否已被删除,请将if语句改为:

if (!change.after.val()) {
  return console.log('Una notificacion se elimino de la base de datos : ', notification_id);
}

在留档中描述。

 类似资料:
  • 问题内容: 我正在尝试使用移动应用程序做一个简单的hello world firebase函数,我想记录用户ID,以便可以看到该函数确实起作用。这是我当前的JavaScript代码: 当新数据写入特定的数据库表时,它会触发,但是会出现此错误: 通知数据库如下所示: 问题答案: 您需要安装最新的firebase-functions和firebase-admin: 为了能够使用新的API,请在此处查看

  • 当我想从实时数据库更新CloudFireStore时,我部署了下面的代码,结果出错。 TypeError:无法读取导出时未定义的属性“ref”。改变现状。功能。数据库参考onUpdate。事件(/user\u code/index.js:18:20)在cloudfunctionnewsignation(/user\u code/node\u modules/firebase functions/l

  • 当我尝试使用Firebase部署--Only函数命令部署到一个新的Firebase项目时,我收到了这个错误。我有两个正在使用的项目,一个开发人员和一个prod,我正在处理prod和部署现在也工作得很好,但是当我添加这个项目开发时,部署在prod中保持工作良好,但在这个新项目开发中没有。相反,我得到了这个错误: 错误:解析函数触发器时发生错误。 TypeError:无法读取Object上未定义的属性

  • 为什么我得到这个错误不能读取未定义的触摸属性? 为什么它不能读取,但它可以读取 当我们使用

  • 问题内容: 我正在制作非常简单的react应用。但是,当我尝试通过onChange事件调用父(实际上是祖父母)组件的方法时,我一直在获取。 这是触发事件的组件/表单(因此,在绑定的父组件上调用方法…是的,因为我通过道具将其从父组件传递下来,所以在方法上使用了.bound(this)。) 这是我如何通过大多数父(祖父母)组件中的props传递该方法的方法。 这是我作为父项(方法所有者和方法调用程序之

  • 我正在测试发送电子邮件与流星js和nodemailer插件: 流星添加捷运:流星NodeEmailer 当页面加载时,我在导航器的控制台上看到错误:无法读取未定义的属性“创建运输”。 那么问题是什么呢? 代码如下: /////////////////////////////////////////// ///////////////