当前位置: 首页 > 知识库问答 >
问题:

前往Firestore从集合中获取所有文档

戚晨
2023-03-14

使用go和FireStore创建web应用程序。我遇到了一个奇怪的问题。如果使用NewDoc方法保存数据

    ref := client.Collection("blogs").NewDoc()

    _, err := ref.Set(ctx, mapBlog)
    if err != nil {
        // Handle any errors in an appropriate way, such as returning them.
        log.Printf("An error has occurred: %s", err)
    }

我可以使用

    var bs models.Blogs
    iter := client.Collection("blogs").Documents(ctx)
    for {
        var b models.Blog
        doc, err := iter.Next()
        if err != nil {
            fmt.Println(err)
        }
        if err == iterator.Done {
            break
        }
        if err := doc.DataTo(&b); err != nil {
            fmt.Println(doc.Data())
            bs = append(bs, b)

        }
    }

现在,当我只想查找博客集合中的所有文档时,这是很棒的。但是我遇到了无法从blogs集合中查询特定blog的问题。我通过查看文档和保存类似的帖子来解决这个问题。

//p is a struct and p.ID is just a string identifier
// the docs show creating a struct with an ID and then an embedded struct within. 
_, err := client.Collection("blogs").Doc(p.ID).Set(ctx, p) 

    if err != nil {
        fmt.Println(err)
    }

但是,由于我自己创建了docID,所以从整个集合中检索所有文档时使用

 if err := doc.DataTo(&b); err != nil {
            fmt.Println(doc.Data())
            bs = append(bs, b)
            fmt.Println(b)
        }

共有1个答案

赏夕
2023-03-14

只有当doc.datato(&b)返回错误时,程序才会将blogs追加到结果中。

这样编写代码:

var bs models.Blogs
iter := client.Collection("blogs").Documents(ctx)
defer iter.Stop() // add this line to ensure resources cleaned up
for {
    doc, err := iter.Next()
    if err == iterator.Done {
        break
    }
    if err != nil {
        // Handle error, possibly by returning the error
        // to the caller. Break the loop or return.
        ... add code here
    }
    var b models.Blog
    if err := doc.DataTo(&b); err != nil {
        // Handle error, possibly by returning the error 
        // to the caller. Continue the loop, 
        // break the loop or return.
        ... add code here
    }
    bs = append(bs, b)
}
 类似资料:
  • 我正在使用Java开发一个Android应用程序,我使用firestore数据库,我有一个名为用户位置的集合,其结构类似于照片: 分贝 我的问题是,当一个用户改变他的位置或一个新用户进入一个已经存在的位置(其他用户有相同的位置)时,它会创建一个新文档(如在“oran, algerie”中)。当我添加新用户并更新文档时,我想使用,但问题是我无法以正常方式检索根集合的所有文档: 它返回null。我尝试

  • 我试图设置一个聊天应用程序,在其中你可以搜索随机的用户交谈。现在,firestore中的数据库结构如下: 集合“users”-文档“userid”-集合“conversations”-文档“conversationid”-字段“partner”,“lastmessage” 其次,我有一个集合“conversations”,其中包含对话中的所有消息。 我现在尝试做的是,当你按下一个按钮时,应用程序将

  • 嗨,我从javascript和react-native开始,我花了几个小时试图解决这个问题。有人能告诉我如何从firestore收集处获得所有文件吗? 我一直在尝试这个: 日志1打印所有对象(一个接一个),但日志2没有定义,为什么?

  • 我想从一个集合中得到所有的文件,然后用它们,得到他们的身份证。这里我的集合如何是用户集合,它只是一个集合和多个文档。我试了一下,但不起作用: 更新

  • 假设我有这种结构 其中和是集合,和是文档 有没有一种方法可以通过一个查询获得根文档中包含的所有内容<如果我这样问 我只得到字段。我想要的是B的所有文件 我基本上希望我的查询返回 是否可能或者我真的需要对每个集合进行多个查询:/? 假设我有一个代表用户配置文件的非常深的嵌套集合树,我的成本会像地狱一样上升,因为每次我加载用户配置文件时,我都有一个读取请求的乘数其中N是我的树的深度: /.

  • 我现在有一个firestore,看起来像这样: 我使用的是,我试图获取“报告”集合中的所有文档。 我可以得到一个报告: 但我无法得到整个子集合 这可能吗?我是新手,所以这可能是一个愚蠢的问题。 谢谢 编辑控制台中收到的错误消息是: 我不确定权限,我没有访问权限,但如果是权限问题,我很困惑,我可以从集合中获取一个文档,但找不到获取所有文档的方法