如何从Swift中的Cloud FireStore Firebase访问特定字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Swift中的Cloud FireStore Firebase访问特定字段相关的知识,希望对你有一定的参考价值。

这是我的数据结构:

我有一个试图从Cloud Firestore访问数据的ios应用程序。我成功地检索了完整的文档并查询了文档。但是,我需要访问特定文档中的特定字段。我如何拨打电话,从swift中的Firestore中检索一个字段的值?任何帮助,将不胜感激。

答案

没有API只从文档中提取单个字段。使用getDocument()时始终会获取整个文档。这意味着也没有办法使用安全规则来保护文档中的单个字段与其他字段不同。

如果您尝试最小化通过网络传输的数据量,可以将该单独字段放在主文档的子集合中的自己的文档中,并且可以单独请求一个文档。

另见thread of discussion

另一答案

这实际上非常简单,并且使用内置的firebase api非常容易实现。

        let docRef = db.collection("users").document(name)

        docRef.getDocument(source: .cache)  (document, error) in
            if let document = document 
                let property = document.get(field)
             else 
                print("Document does not exist in cache")
            
        
另一答案

实际上有一种方法,使用Firebase本身提供的示例代码

let docRef = db.collection("cities").document("SF")

docRef.getDocument  (document, error) in
    if let document = document, document.exists 
        let property = document.get('fieldname')
        print("Document data: \(dataDescription)")
     else 
        print("Document does not exist")
    

另一答案
//this is code for javascript
var docRef = db.collection("users").doc("ID");

docRef.get().then(function(doc) 
if (doc.exists) 
//gives full object of user
console.log("Document data:", doc.data());
//gives specific field 
var name=doc.get('name');
console.log(name);

 else 
    // doc.data() will be undefined in this case
    console.log("No such document!");

).catch(function(error) 
console.log("Error getting document:", error);
);

以上是关于如何从Swift中的Cloud FireStore Firebase访问特定字段的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Cloud Firestore 上的对象中检索值?迅速

无法通过Cloud Functions(onCall)从Cloud Firestore返回一个json数组到Swift

Swift - Cloud Firestore 中的唯一 ID

init() 中的 Swift Array.append 不能与 Firestore (Google Cloud/FIrebase) 结合使用

在使用 Swift 的 iOS 应用程序中使用 DispatchQueue 等待数据从 Cloud Firestore 返回时遇到问题

Swift 和 Cloud Firestore 事务 - getDocuments?