如何解决Firestore onSnapshot:一个查询复杂或多个查询简单
创建具有复杂条款的onSnapshot 或创建具有简单子句的 3快照,在成本或性能上均存在差异。此外,帖子集合具有一条规则,该规则可以检查 posts_permission 集合是否已登录的用户有权阅读帖子。这是一个移动项目,因此我担心性能和成本,因为帖子可以不断更新。
复杂子句:
const query = db.collection('posts')
.where(firebase.firestore.FieldPath.documentId(),'in',['id1','id2','id3']);
query.onSnapshot(snap => {console.log(snap)});
简单条款:
const query1 = db.collection("posts").doc("id1")
const query2 = db.collection("posts").doc("id2")
const query3 = db.collection("posts").doc("id3")
query1.onSnapshot(snap => {console.log(snap)});
query2.onSnapshot(snap => {console.log(snap)});
query3.onSnapshot(snap => {console.log(snap)});
解决方法
就成本而言,读取的X文档总是成本为X文档。接受多少查询都没有关系。您还将为通过评估安全规则阅读的每个文档付费。如果您仅遵循documentation中的信息,则计算成本确实非常容易。没有任何隐藏费用。
就性能而言,在多个查询和单个查询之间并没有太大的区别。除非您要处理大量文档,否则根据文档的大小和数量以及网络连接的质量,您可能会看到可比的性能。所有读取的文档都通过单个连接进行流水线传输,因此从多个侦听器(而不是一个侦听器)接收文档没有实质性区别。如果您有疑虑,应该自己对此进行基准测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。