如何知道查询是否不返回文档

时间:2019-11-13 13:57:52

标签: python python-3.x firebase google-cloud-firestore

我怎么知道文档是否为空?我无法len(docs)

docs = query.stream()
for doc in docs:
    // do something

我需要知道是否没有与查询匹配的文件

谢谢!

2 个答案:

答案 0 :(得分:1)

stream() returns a generator以来,没有一种简单的方法可以在不实际读取的情况下确定它是否为空。

到目前为止,最简单的解决方案将延迟知道,直到您经过循环。像这样:

docs = query.stream()
stream_empty = True
for doc in docs:
  stream_empty = False
  # do something

if stream_empty:
  print("it was empty")
else:
  print("it wasn't empty")

否则,您将不得不围绕允许窥视的流的生成器构建自己的生成器。参见this question

答案 1 :(得分:0)

您可以直接使用查询及其方法 stream(),而不是使用 get() 返回的生成器。

get 方法运行查询并收集您可以访问的列表中的文档。如果没有文档与查询匹配,则此列表为空。

docs = query.get()
if not docs:
    # do something
else : 
    for doc in docs :
        doc = doc.to_dict()
        # do something