Firestore读/写与云功能读/写

时间:2019-11-04 20:24:51

标签: firebase google-cloud-firestore google-cloud-functions

我正在使用Firestore,我有以下问题,有关如何使用户的行为影响应用程序成本:

什么更划算:

  • 要使用在用户输入Web表单时保存在数据库中的实时表单

  • 使用firebase函数一次将所有字段保存在表单中

问题:

  • 代理使用云功能是否矫kill过正? (只是为了避免成本)
  • 当用户键入(实时更新)时,是否每次都将其视为对数据库的新写操作?

2 个答案:

答案 0 :(得分:3)

  

什么更划算:

     
      
  • 要使用在用户键入Web表单时保存在数据库中的实时表单
  •   

每次实时保存表单时,这都会花费您一笔费用。

  
      
  • 要使用firebase函数一次将所有字段保存在表单中
  •   

这将花费您一次书写。

两者之间的成本差异应该很明显-多次写入与一次写入。

  

问题:

     

代理具有云功能是否矫kill过正? (只是为了避免费用)

如果您仅出于节省成本的原因进行代理,那就太过分了。除了文档写操作外,函数调用还需要您花钱,无论它来自何处都将花费相同的费用。

  
      
  • 当用户键入(实时更新)时,是否每次都将其视为对数据库的新写操作?
  •   

就像我之前说的,是的。

通过功能发送表单提交的唯一真实原因是能够对表单字段的有效性进行深入,安全的检查。客户端检查不安全。您可以使用安全规则来执行检查,但是这是有限的。如果您需要确保表单字段具有经过严格检查的值,则“云函数”可能是您的最佳选择。但是不可能告诉您问题中给出的信息。

答案 1 :(得分:2)

没有特别的理由需要使用一个函数同时保存所有内容-在任何时候调用该函数,而不是对数据库进行单个更新。在这里使用函数肯定会更加昂贵(假设它除了提供数据库写操作外不提供其他功能),因为您承担写的费用,而则承担函数执行的费用。 / p>

当然,您可能还有其他一些原因需要调用云函数来进行简单代理之外的写操作-例如确保不能仅由安全规则强制执行的约束。在这种情况下,付出的代价可能值得增加功能。

关于实时批处理或编写更好些,因此一次charged for every document write到Firestore一次写肯定要便宜些。更具体地说,每个setupdate都作为一次写入收费。因此,与在用户输入数据时实时(或每个字段)写入文档相反,在多个字段中只写入一次文档肯定会比较便宜。