首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在云消息传递触发函数中引用Firebase实时数据(在标题或正文中使用)

如何在云消息传递触发函数中引用Firebase实时数据(在标题或正文中使用)
EN

Stack Overflow用户
提问于 2020-12-23 08:30:03
回答 1查看 38关注 0票数 1

这似乎应该是绝对幼儿园水平简单,但我是一个完全初学者的Firebase/FCM/node.js,并没有找到一个教程或堆栈解释了这一点。这里可能会使用错误的术语,所以请原谅我!

我做了一个简单的Firebase函数,在我的Firebase实时数据库中触发对movecarday的更改通知。我使用change.after.val()将更新后的数据作为文本包含在通知的标题字段中。那部分很好用。

但是,我希望引用来自该数据库(movecartime)中不同节点的第二段数据,并将其包含在消息正文中。数据在Firebase中是这样设置的(非常简单):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   {
  "movecarday" : "Monday",
  "movecartime" : "9:30",
}

下面是我目前在index.js中为触发器函数使用的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.pushNotification = functions.database.ref('/movecarday/{day}').onWrite((change, context) => {
    console.log('Push notification event triggered');

    const valueObject = change.after.val(); 
    var thisistheday = valueObject;
    
var timeref = firebase.database().ref("/movecartime/{time}");
    timeref.on("value", function(snapshot) {
    var thisisthetime = snapshot.val();
});


    const payload = {
        notification: {
            title: `The car is parked in a ${thisistheday} spot!`,
            body: `Must be moved by ${thisisthetime}`,
            sound: "default"
        }
        }; 

 const options = {
        priority: "high",
        timeToLive: 60 * 60 * 24
    };

    return admin.messaging().sendToTopic("pushNotifications", payload, options);
});

希望您能看到的是,movecarday onWrite正在触发通知,并且change.after.val()被设置为var并放置在标题字符串中。这部分工作得很完美!但是,我也试图获得movecartime的值,以便将其放置在主体字符串中。这里的代码只是我在各种教程、文档和堆栈的基础上尝试过的许多管道式的变体之一,它们使用快照从movecartime获取数据并将其转换为var。但是,我尝试过的每一个变体要么在部署级别上失败,要么阻止通知被完全发送。

对于这段代码的快照/movecartime部分,我做错了什么?在FCM触发器函数中,这甚至是可能的吗?它看起来应该是绝对基本的,但我只是遗漏了一些东西。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-23 08:36:36

你这里出了很多问题。请仔细阅读。

首先,不要对像这样的查询使用on()on()为数据添加了一个持久侦听器,并在数据更改时反复调用callbck,直到删除为止。这根本不是你想要的。相反,使用一次性()查询一次。它返回查询位置的数据快照即可实现的承诺。你需要利用这个承诺来获取数据。

其次,这不会将time的值放在字符串中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var timeref = firebase.database().ref("/movecartime/{time}");

在JavaScript中,这实际上是试图查询一个名为"/movecartime/{time}“的数据库节点。相反,您需要使用回勾引号将变量的值插入字符串中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var timeref = firebase.database().ref(`/movecartime/${time}`);

第三,似乎您的函数代码是无效的,因为我们不知道您是如何发送消息的。但是您在代码中没有正确地处理承诺。您的函数将需要返回在发送通知后解决的承诺。

云函数并不是学习JavaScript最容易的地方。在浏览器中更容易学习。但是如果你必须学习云函数,你应该自由地使用日志来理解你的代码是如何运行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65427647

复制
相关文章
使用SQL语句创建表_用sql语句创建员工表
create table 表名 (列1 数据类型 1,列2 数据类型) tablespace 表空间
全栈程序员站长
2022/11/19
4.1K0
使用SQL语句创建表_用sql语句创建员工表
SQL语句中创建表的语句_用sql创建表
连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)
全栈程序员站长
2022/11/03
4.7K0
SQL语句中创建表的语句_用sql创建表
SQL 基础-->创建和管理表
(列名 数据类型 [ default 默认值] [ 约束条件] [ , ......] )
Leshami
2018/08/07
9700
怎么创建数据表_sqlserver创建表的sql语句
知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。
全栈程序员站长
2022/11/17
3.2K0
怎么创建数据表_sqlserver创建表的sql语句
sql 创建表_sql server建表语句
在线Sqlite查看器|修改器 http://lzltool.com/sqlite-viewer
全栈程序员站长
2022/11/17
2.2K0
sql 创建表_sql server建表语句
SQL2012_创建数据库,创建表,表的内外链接
create table a1( aid int constraint PK_a primary key, age int check(age between 27 and 80), sex int check(sex in('M','F')), tel nvarchar(20) check(tel like'1[3,5,7,8][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') ) create table b2( f n
赵腰静
2018/03/09
1.9K0
oracle创建表空间的SQL语句
oracle创建表空间语句: create tablespace shopping –创建一个叫shopping的表空间 datafile ‘shopping.dbf’ –物理文件名 size 50m –大小 autoextend on –自动增长 next 50m maxsize 20480m –每次扩展50m,最大为20480m extent management local;
全栈程序员站长
2022/09/18
4.2K0
数据库中创建表的语句_创建基本表学生表的sql语句
在线Sqlite查看器|修改器 http://lzltool.com/sqlite-viewer
全栈程序员站长
2022/11/02
4.9K0
使用SQL语句创建表(建立基本表数据的sql语句是)
1.创建表的语法 create table 表名 (列1 数据类型 1,列2 数据类型) tablespace 表空间
全栈程序员站长
2022/08/02
3.4K0
使用SQL语句创建表(建立基本表数据的sql语句是)
hibernate自动建表
表结构和数据总是在程序执行的时候无端的修改,折腾了好长时间,查了很长时间hibernate的数据库映射文件和接口程序,始终没有发现有什么错误,到最后才发现了它!
似水的流年
2019/12/05
1.7K0
数据库建表规则_SQL创建数据表
建表语句的规范: 1.字段的设计 A. 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。   B. 数据类型尽量小,这里的尽量小是指在满足可以预见的未来需求的前提下的,但是有不能太小, 上次监控系统里面的表 mon_tair_stat_detail_2012_1 的data_size 和 use_size定义的是int(15) 实际上最大长度是int(11) 只有bigint才有(15). 所以在建表的时候一定要预估这个字段最大的长度到底是多少。   C. 尽量不要允许NULL,除非必要,可以用NOT NULL+DEFAULT 的值来代替。   D. 少用TEXT和IMAGE,二进制字段的读写是比较慢的,而且,读取的方法也不多,大部分情况下最好不用。
全栈程序员站长
2022/10/02
2.2K0
Excel VBA SQL Join Syntax ErrorExcel VBA SQL 连接语法错误
【问题标题】:Excel VBA SQL Join Syntax ErrorExcel VBA SQL 连接语法错误 【发布时间】:2015-09-24 00:08:56 【问题描述】:
matinal
2023/10/13
2510
菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表
项目用的是SSH基础框架,当中有一些信息非常相似,但又不尽同样。假设每个建一个实体的话,那样实体会太多。假设分组抽象,然后继承,又不是特别有规律。鉴于这样的情况。就打算让用户自己配置要加入的字段,然后生成相应的表。
全栈程序员站长
2022/07/08
5600
菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表
sql快速创建一张相同表结构的表
根据t_bond_basic_info表,创建表结构相同的表,取老表中的一部分字段t_bond_basic_info_new 后面的条件 where id>146000 创建的时候把id>146000的数据写到新表中,如果where 1<>1,只创建表结构,不把数据写进去
周小董
2019/03/25
3K0
oracle创建表的sql语句「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/03
1.3K0
hibernate sql查询_sql server查询命令
SQLQuery接口用于接受一个sql语句进行查询,然后调用list()或uniqueResult()进行查询。但是sql语句不会直接封装到实体对象里,需要手写代码才可以封装到实体中。
全栈程序员站长
2022/11/11
2.7K0
[Java]Srping Boot 让hibernate 自动创建的表是InnoDB引擎的设置
但是上面的配置,无法在MySQL 5.5 创建InnoDB 表的同时不出错,因此在MySQL5.5的时候 需要使用下面的配置
用户2353021
2020/05/11
8120
[Java]Srping Boot 让hibernate 自动创建的表是InnoDB引擎的设置
mybatis和hibernate的以及jpa区别_hibernate sql
hibernate和mybatis是当前流行的ORM框架。hibernate对数据库结构提供了较为完整的封装。mybatis主要着力点在于java对象与SQL之间的映射关系。
全栈程序员站长
2022/09/30
1.2K0
mybatis和hibernate的以及jpa区别_hibernate sql
clickhouse的sql语法功能1-创建库,创建表等
分布式引擎参数:服务器配置文件中的集群名,远程数据库名,远程表名,数据分片键(可选)。 下面是样例:
公众号-利志分享
2022/04/25
2K0
sqlserver语句创建表格_创建表的sql语句外键
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183704.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
2.2K0

相似问题

未创建Hibernate自动生成的SQL表。

10

hibernate未创建表

21

Hibernate Spring :表未创建[如果存在,则不成功:删除表]

13

未使用Hibernate创建表

21

Hibernate表未自动创建

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文