有没有一种方法可以通过编程方式创建firestore触发器?
我希望使用firestore触发器来保持复合对象在主对象中的一致性->次要关系-";次级";必须相应地更新,如果";初级";已更改。
然而,我不需要看每一个";初级";文档在集合中,因为只有有限数量的";初级";对象具有";次级";关系-我的假设是,只观察特定文档而不是整个集合将提高整体性能并降低成本,因为触发器将只为相关文档触发,因为要侦听的文档数量与集合中的文档总数相比要少得多
虽然我可以将那些具有关系的文档放在一个单独的集合中,并在那里添加一个通配符触发器,但我不想这样做,因为我想保持集合的一致性,并减少查询/更新";初级";我的应用程序中的文档。
相反,我想知道是否有一种方法可以将触发器添加到特定的";初级";在创建新关系时动态文档?
或者,从性能/成本的角度来看,如果我添加多个单文档稀疏触发器,而不是为整个集合添加一个通配符侦听器,这真的重要吗?
使用云函数触发器时,Firestore数据库没有已知的性能缺点。数据库只是在发生更改后异步发出事件。它们不会影响数据库的性能。
添加新触发器的唯一方法是通过部署过程。通常情况下,这将在Firebase CLI或gcloud中发生。如果您不想使用这两个CLI中的任何一个,则必须使用云函数REST API。这对于设置和使用来说是非常重要的。这取决于你来决定这是否值得。
根据Doug的回答,我最终为整个集合设置了一个whildcarded触发器,并在"初级";doc,指示是否存在要更新的关系。
这有助于最大限度地减少触发器内部的冗余工作,以节省CPU/Memory/额外请求,并仅执行基于标志字段的额外逻辑。