快速从firestore的结构中检索值

时间:2018-10-24 15:54:12

标签: ios swift firebase google-cloud-firestore

我正在查询Firestore中的一些数据,并将其放入Usersdata中, 但我不知道如何从Usersdata获取我的值。

请帮助我查询我的数据!

这是我基于Firestroe示例的结构

struct Usersdata {
let uid:String?
let facebook:String?
let google:String?
let name:String?
let age:Int?
let birthday:String?
let smokeage:Int?
let smokeaddiction:Int?
let smokebrand:String?
let gold:Int?
let score:Int?
let fish:Int?
let shit:Int?
let userimage:String?
init?(dictionary: [String: Any]) {
    guard let uid = dictionary["uid"] as? String else { return nil }
    self.uid = uid
    self.facebook = dictionary["facebook"] as? String
    self.google = dictionary["google"] as? String
    self.name = dictionary["name"] as? String
    self.age = dictionary["age"] as? Int
    self.birthday = dictionary["birthday"] as? String
    self.smokeage = dictionary["smokeage"] as? Int
    self.smokeaddiction = dictionary["smokeaddiction"] as? Int
    self.smokebrand = dictionary["smokebrand"] as? String
    self.gold = dictionary["gold"] as? Int
    self.score = dictionary["score"] as? Int
    self.fish = dictionary["fish"] as? Int
    self.shit = dictionary["shit"] as? Int
    self.userimage = dictionary["userimage"] as? String
    }   
}

这是我从Firebase查询数据的功能

 func test(schema:String , collection:String , document : String){
    let queryRef = db.collection("Users").document(userID).collection(collection).document(document)
    queryRef.getDocument { (document, error) in
        if let user = document.flatMap({
            $0.data().flatMap({ (data) in
                return Usersdata(dictionary: data)
            })
        }) {
            print("Success \(user)")
        } else {
            print("Document does not exist")
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我想您是在问如何使用Firebase数据处理结构。这是一个可以读取已知用户的解决方案,用该数据填充结构,然后打印uid和名称。

假设一个结构

npm install uuid
-------------------------------------
const uuidv4 = require('uuid/v4');
uuidv4(); // ⇨ '10ba038e-48da-487b-96e8-8d3b99b6d18a'

or

import uuidv from  'uuid/v4';
uuidv4(); // '10ba038e-48da-487b-96e8-8d3b99b6d18a

然后是一个保存数据的结构

Users
  uid_0
    name: "Henry"

以及读取该用户,填充结构并从结构中打印出数据的功能

struct Usersdata {
    let uid:String?
    let user_name:String?
    init(aDoc: DocumentSnapshot) {
        self.uid = aDoc.documentID
        self.user_name = aDoc.get("name") as? String ?? ""
    }
}

和输出

func readAUser() {
    let docRef = self.db.collection("Users").document("uid_0")
    docRef.getDocument { (document, error) in
        if let document = document, document.exists {
            let aUser = Usersdata(aDoc: document)
            print(aUser.uid, aUser.user_name)
        } else {
            print("Document does not exist")
        }
    }
}