将firebase数据节点导出为pdf报告

什么是使用Firebase作为后端的移动应用程序紧急消息系统。 当一个紧急事件结束时,我想捕获一个pdf文件的消息日志。 我一直无法find任何与Firebase合作的报表编辑器。 这意味着我可能不得不导出到php的MySQL。 Firebase php SDK看起来对于这个任务来说太过矫枉过正了。 我一直在googling php从firebase获取和大多数的响应与使用Firebase的PHP SDK。 这是唯一可以实现的方式吗?

你可以在云端函数上使用PDF Kit ( … )(它全是nodeJS,没有PHP可用)。

以便从Firebase读取数据并写入存储桶或Data Store ; 该示例脚本仍然需要一个数据库引用和一个存储目的地来呈现PDF内容(最终从一个模板)并将其放在它所属的位置。 另请参阅firebase / functions-samples (特别是定义依赖关系的package.json )。 npm install -g firebase-tools安装部署所需的工具; 还需要安装这个需求才能在本地知道(非常相似的作曲者 – 虽然在部署过程中远程的这些都是已知的)。

您需要a)Firebase 事件 onUpdate ()作为触发器,b)检查返回的DeltaSnapshot的结束时间作为值,然后c)然后渲染并存储PDF文档。 代码可能会有所不同,只是为了在给定的环境中提供一个粗略的工作原理:

 'use strict'; const admin = require('firebase-admin'); const functions = require('firebase-functions'); const PDFDocument = require('pdfkit'); const gcs = require('@google-cloud/storage')(); const bucket = gcs.bucket( 'some-bucket' ); const fs = require('fs'); // TODO: obtain a handle to the delta snapshot // TODO: render the report var pdf = new PDFDocument({ size: 'A4', info: {Title: 'Tile of File', Author: 'Author'} }); pdf.text('Emergency Incident Report'); pdf.pipe( // TODO: figure out how / where to store the file fs.createWriteStream( './path/to/file.pdf' ) ).on('finish', function () { console.log('PDF closed'); }); pdf.end(); 

在这种情况下,外部运行的PHP代码不能在服务器端运行。 问题在于,外部服务器不会提供任何实时触发,因此在时间戳更新(正如人们期望的那样)下,文件不会立即出现。 也可以添加外部Web钩子 (或与PHP接口),例如。 通过HTTPS获取这些PDF文件(或者甚至在HTTPS请求时生成,用于外部触发的生成)。 对于本地testing,可以使用命令firebase serve ,节省很多时间与firebase deploy

重点在于,可以教给Firebase PDF文件应该是什么样子,什么时候创build,以及将它们放在哪里,作为自己的微服务 – 完全基于这个基础设施。 脚本一个脚本应该仍然在可接受的范围内,给所有提供的线索。