【问题标题】:Importing database from file without triggering Firebase functions从文件导入数据库而不触发 Firebase 函数
【发布时间】:2017-12-05 23:06:41
【问题描述】:

我有一个 Firebase 数据库,并实现了一些功能。例如,在创建/lists/{list_id}/ 时,函数会自动将/lists/{list_id}/created_on 设置为当前时间戳。

我刚刚意识到,当我从文件中导入数据库时​​,Firebase 仍会运行所有这些函数,因此所有列表的 created_on 都设置为当前时间戳。

我也有在添加东西时发送电子邮件的功能,我绝对不希望它们被触发。

如何避免它?我想在不触发任何功能的情况下从文件中恢复数据库。

【问题讨论】:

  • 发现了一个丑陋的解决方法:转到console.cloud.google.com/functions 并删除所有功能。从文件中导入数据库,然后重新部署。这很丑,因为:1)当我将来真的需要恢复数据库时,我很可能会忘记这样做。 2)它需要重新部署:禁用/启用会容易得多...有更好的方法吗??

标签: firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

您是否正在从没有实际用户使用项目的完全干净状态恢复?在这种情况下,只需通过部署一个空的 index.js 来取消部署所有函数,执行导入,然后再次部署所有函数。这应该可以通过 Firebase CLI 实现。

如果您有要导入的记录,而产品具有您不想影响的合法用途,则不建议在任何时间内关闭您的功能。相反,您可以处理您的导入数据以添加一个子项,该子项指示特定字段将被您拥有的任何函数免于处理,并让这些函数检查该子项是否存在。如果它妨碍您,您可以稍后将其删除。

【讨论】:

  • 由于损坏(将来可能会再次发生),我从备份文件中恢复了数据库。因此,添加“子标志”对我不起作用。我想添加一个函数,该函数将在创建特定键时触发(例如/internal/make_sure_functions_are_off),并将删除整个数据库并将其替换为“您忘记在恢复数据库之前删除函数”的消息。此特殊密钥将始终在数据库中。这样,如果我再次恢复并忘记删除功能,我会得到有用的提醒。但这只是一种解决方法,而不是真正的解决方案......
猜你喜欢
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 2018-11-25
  • 2017-12-13
  • 2022-01-22
  • 2018-10-19
  • 1970-01-01
相关资源
最近更新 更多