如何从 Firebase 获取按变量排序的文档(文档名称未知)[关闭]

Posted

技术标签:

【中文标题】如何从 Firebase 获取按变量排序的文档(文档名称未知)[关闭]【英文标题】:How do I get a document from Firebase that is ordered by a variable (DocumentName is not known) [closed] 【发布时间】:2020-08-27 14:50:26 【问题描述】:

我已成功从 Firestore 获取文档。

下一个问题是我应该如何更改代码,以便获得添加到集合中的最新文档。

我知道我可以使用.order(by: String).limit(to: Int) 之类的一些参数,但我不知道WHEREHOW 来使用它。

我还查看了 Firestore 文档中的答案,但只是说明了对于某些特定示例,您必须如何使用以及使用什么功能。

我添加了这个函数,它应该得到这个未知的文档和数据库模型的图片。

代码sn-p:

func getSingleproperty() 

  var desiredProperty: String!
    
    let docRef = db.collection("UnKnownErrorMessages").document()


    docRef.getDocument  (document, error) in
      if let document = document, document.exists 
        let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
        //Print all data in the document
        print("Document data: \(dataDescription)")

        if let allPropertiesInDocument = document.data() 

          let nameOfPropertyIwantToRetrieve = "read"

          if let selectedProperty = allPropertiesInDocument[nameOfPropertyIwantToRetrieve] 
            desiredProperty = selectedProperty as? String
          
        
        //Print exact the data that is in 'nameOfPropertyIwantToRetrieve' specified
        print("Value of desiredProperty is \(desiredProperty.description)")

       else 
        print("Document does not exist \(error.debugDescription)")
      
  

Firestore database model(红框内的变量,是我要排序的变量)

【问题讨论】:

firebase.google.com/docs/firestore/query-data/… 嘿@tajh,我知道这个文档存在(查找了很多次),但我不知道如何请求这个特定的术语。我一定是做错了,没有注意到他。但是无论如何,我可能没有访问文档。 【参考方案1】:

这是一个真实的示例,说明如何从 Firestore 数据库中检索值。在这种情况下,我使用 this page 上的 Firestore 文档中提供的代码自定义了一个查询以满足您的需求,位于“添加数据”下。

请尝试以下方法:

  func getSingleproperty() 
    var desiredProperty: String!
    let docRef = db.collection("UnKnownErrorMessages").document("Error1234")

    docRef.getDocument  (document, error) in
        if let document = document, document.exists 
            let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
            print("Document data: \(dataDescription)")
          
          if let allPropertiesInDocument = document.data() 
            
            let nameOfPropertyIwantToRetrieve = "errorMessage"
            
            if let selectedProperty = allPropertiesInDocument[nameOfPropertyIwantToRetrieve] 
              desiredProperty = selectedProperty as? String
            
          
          print("Value of desiredProperty is \(desiredProperty)")
          
         else 
            print("Document does not exist")
        
    
  

【讨论】:

感谢您的工作,感谢您的工作。我试了一下,出现错误postimg.cc/kB60LH2x 这是一个“警告”,而不是一个“错误”。错误将停止编译;警告没有。 learn.co/lessons/swift-xcode-warnings-errors。如果这对您有帮助,请务必投票并“接受”答案! 是的,我知道 :D 但在控制台中查看它说,该文档不存在。但它确实 好的,谢谢。帮了大忙! 所以,我查看了安全设置,允许用户从 Firestore 读取/写入/写入,是的。它处于安全模式。所以没有人被允许提出请求 XD【参考方案2】:

您无法从 Firestore 文档中读取单个密钥。您总是会得到整个文档。

要访问最新文档,请参阅https://***.com/a/54178993

【讨论】:

好的,首先感谢您的澄清,我必须获取整个文档并不是什么新鲜事。我试图将函数与 swift 匹配,但后来我意识到这不起作用,因为这些函数是为 angular 而不是为 swift 制作的。对不起,如果我的问题对其他人来说似乎很愚蠢,但我不明白如何完成这项工作??

以上是关于如何从 Firebase 获取按变量排序的文档(文档名称未知)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase 云 Firestore 中查询一个字段然后按另一个字段排序?

无法按日期从 Google Cloud Pub/Sub 功能中的 Firebase 获取文档

如何按'_createTime'对firestore文档进行排序?

如何根据来自firebase的时间戳获取排序数据[重复]

将 Firebase Firestore 文档值分配给 swift 变量 [重复]

如何从firebase中对对象进行排序?