【发布时间】:2018-06-16 08:46:51
【问题描述】:
我想知道是否可以在到 Firestore 数据库的一次往返(网络调用)中通过 id 列表获取多个文档。
【问题讨论】:
-
您似乎认为往返会导致您的应用出现性能问题。我不会这么认为。 Firebase 有在这种情况下表现良好的历史,因为它pipelines the requests。虽然我还没有检查 Firestore 在这种情况下的行为方式,但我希望在假设存在性能问题之前先看到性能问题的证据。
-
假设我需要文件
a、b、c来做某事。我在单独的请求中并行请求所有三个。a需要 100 毫秒,b需要 150 毫秒,c需要 3000 毫秒。结果,我需要等待 3000 毫秒才能完成任务。其中将是max。当要获取的文档数量很大时,风险会更大。取决于网络状态,我认为这可能会成为一个问题。 -
虽然将它们全部发送为单个
SELECT * FROM docs WHERE id IN (a,b,c)不会花费相同的时间吗?我看不出有什么区别,因为连接只建立一次,其余的都是通过管道传输的。时间(在初始建立连接之后)是所有文档的加载时间 + 1 次往返,这两种方法都相同。如果它对您来说表现不同,您能否分享一个示例(如我的链接问题中所示)? -
我想我失去了你。当您说它是流水线时,您的意思是 Firestore 自动分组并将查询发送到他们的服务器一次往返数据库?
-
是的,我已经阅读了您的回答,但目前还不清楚是否会有多个网络调用或只有一个。听起来
n项目将同时进行n网络调用,而不仅仅是一个同时执行n查询的网络调用。
标签: javascript node.js firebase google-cloud-platform google-cloud-firestore