从客户端应用程序中用Excel导出Firestore数据

5
我正在开发一款在线医生预约移动应用程序。我想在应用程序中添加一个界面,使医生可以提取过去的预约数据。是否有任何功能可以让医生将所有过去的预约数据导出到Excel中?
简单来说,我想要这个:--> 选择日期范围。 提取与该日期相关的所有文档。 将这些文档的数据导出到Excel表的行中。 所需字段作为该Excel表的列。
是否有任何服务/方法/技巧可以使用相同的功能?

这个问题非常模糊 - 你是在问如何编写Firestore代码以选择一系列日期的数据,然后将该数据写入.xls格式吗?当然,这是可以做到的,但了解Firestore API是一个很好的起点,因为它演示了如何查询这些数据。你使用的是什么语言和平台? - Jay
2个回答

6
  1. 安装exceljs:npm i --save exceljs
  2. 安装firebase-admin:npm i --save firebase-admin
  3. 创建index.js文件

var admin = require("firebase-admin");
const Excel = require('exceljs')

var serviceAccount = require("service-account.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://mind-next.firebaseio.com"
});
const db = admin.firestore();
let workbook = new Excel.Workbook()
let worksheet = workbook.addWorksheet('your export sheet name')
worksheet.columns = [
    
    {header: 'username', key: 'username'},

    {header: 'creationTime', key: 'creationTime'},
    {header: 'email', key: 'email'},
    {header: 'lastSignInTime', key: 'lastSignInTime'},
    {header: 'photoURL', key: 'photoURL'},
    {header: 'providerId', key: 'providerId'}

  ]
  worksheet.getRow(1).font = {bold: true}

async function getData() {
    const snapshot = await db.collection('your export firestore collection').get();
    snapshot.forEach((doc,index) => {
            const rowIndex = index + 2
            let e = doc.data()
            worksheet.addRow({
              ...e,
            })

    });
    workbook.xlsx.writeFile('yourexportfilename.xlsx')

}

getData()

  1. 然后运行 node index.js

2
如果你有一个服务器,那么你可以简单地获取数据并使用任何模块将数据写入Excel文件。如果你的应用程序是无服务器的,则创建一个云函数来为你完成相同的工作。总会有可以为你完成相同工作的模块。
以下两个示例都适用于NodeJs。
对于NodeJs,可以使用Xlsx Node Module
或者,你可以简单地使用“fs”将JSON写入Excel。 示例

我正在使用Cloud Firestore。 - Compile error end
Cloud Firestore 是数据库。你的应用程序使用什么语言?应用程序是否有服务器或是无服务器的? - Saurav Suman
Firestore是服务器,不提供直接导出Excel的功能。 - Jay
@Jay 在他们的文档[https://cloud.google.com/firestore/docs/]中指出:"Cloud Firestore是一种NoSQL文档数据库",我的答案是基于此而来的。 您是否在暗示它是一个数据库服务器,或者是可用于实现业务逻辑的东西? 如果是后者的话,能否请您分享一些相应的参考资料呢? - Saurav Suman
1
我的评论是关于Firestore 应用程序是无服务器的,这是不可能存在的。Firestore是一个在线实时数据库。虽然它支持离线持久性,但它是有限的,并且旨在处理临时断开连接。因此,是的,Firestore是一个数据库服务器,Firebase产品可以用来实现一些业务逻辑,在某些情况下,这部分系统确定数据如何转换或计算。请查看Cloud Functions,它提供了可扩展的计算能力以响应事件运行代码 - Jay
1
请查看此问题。另外,请查看安全规则,这些规则用于细化和控制业务逻辑。此外,Firebase还具有数据库分析,它实际上会测量Firebase服务器执行业务逻辑例程所需的时间。 - Jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接