使用Firebase作为后端的移动应用紧急消息系统有什么用途。当紧急事件结束时,我想在pdf文档中捕获消息日志。我找不到任何与Firebase一起使用的报表编辑器。这意味着我可能必须将其导出到php mysql。 Firebase php SDK看起来对这项任务来说太过分了。我一直在google搜索来自firebase的php,大多数回复都与使用Firebase php SDK有关。这是唯一可以实现的方式吗?
答案 0 :(得分:3)
您可以在PDF Kit上使用...(Cloud Functions)(它的所有nodeJS,那里没有PHP)。
在npmjs.com上,@firebase-ops,googleapis和@google-cloud有几个软件包。
要从Firebase读取并写入Storage Bucket或Data Store;该示例脚本仍然需要数据库引用和存储目标,以呈现PDF内容(最终来自模板)并将其放置在它所属的位置。另请参阅firebase / functions-samples(尤其是定义依赖关系的package.json
)。 npm install -g firebase-tools
安装部署所需的工具;还需要installed才能在本地知道(非常相似的作曲家 - 远程这些在部署过程中已知)。
您需要a)Firebase Event onUpdate()作为触发器,b)检查返回的DeltaSnapshot的endTime
是否有值和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代码不能在服务器端运行。它的问题是,外部服务器不会提供任何实时触发器,因此在更新时间戳时(正如人们期望它来自实时数据库),文件不会立即出现。一个人也可以添加external web-hooks(或用PHP连接它们),例如。通过HTTPS获取这些PDF文件(甚至在HTTPS请求时生成,用于外部触发生成)。对于本地测试,可以使用命令firebase serve
,与firebase deploy
相比节省了大量时间。
重点是,人们可以教云功能PDF文件的外观,创建时间和放置位置,作为微服务,除了渲染这些文件之外别无其他。在给出所有提供的线索的情况下,脚本编写一个脚本应该仍然在可接受的范围内。