如何从 Firebase 快照添加变量

Posted

技术标签:

【中文标题】如何从 Firebase 快照添加变量【英文标题】:How to add variables from a firebase snapshot 【发布时间】:2022-01-18 14:20:01 【问题描述】:

我知道这个问题已经被问过好几次了,但没有一个解决方案适合我。这是我的快照

Snap (CaseExtend) 
    NYxdSlq8yOgQd3phssRlD =     
        CaseMinute =         
            WMKuImjuH0qPIGJhHHJKv =             
                caseMinute = "";
                dateTime = "Dec 1, 2021 12:20 PM";
                minuteId = WMKuImjuH0qPIGJhHHJKv;
                userId = OtRFaqilTigWvEkUCASvCoEegny1;
            ;
        ;
        CaseParticipant =         
            3f7nqmcWFTenePkEB9KoMHLzVtk2 =             
                userId = 3f7nqmcWFTenePkEB9KoMHLzVtk2;
            ;
            OtRFaqilTigWvEkUCASvCoEegny1 =             
                userId = OtRFaqilTigWvEkUCASvCoEegny1;
            ;
        ;
        caseId = Oj7TwzDC3HQMJKyTb8Ebi;
        caseNumber = TEST;
        court = "Labour Tribunal";
        courtRoomNo = "";
        date = "2021-12-01";
        extendId = NYxdSlq8yOgQd3phssRlD;
        extendStatus = "Not Extend";
        location = "";
        participantCount = 2;
        profilePicture = "https://firebasestorage.googleapis.com/v0/b/lege-155e1.appspot.com/o/Profile%20Pictures%2FOtRFaqilTigWvEkUCASvCoEegny1.jpg?alt=media&token=676226fa-638b-4175-a8d5-247095f6b86a";
        step = TBM;
        time = "";
        userId = OtRFaqilTigWvEkUCASvCoEegny1;
    ;

我使用以下代码检索快照,

   ref.child("CaseExtend").queryOrdered(byChild: "userId").queryEqual(toValue: "OtRFaqilTigWvEkUCASvCoEegny1" ).observe(.value, with:  (DataSnapshot) in
            
            
        )

我想为不同的变量添加 caseID、caseNumber、date.. 和其他值。反正我能做到吗?

【问题讨论】:

您的意思是要从 firebase 获取这些值并将它们分配给您应用中的新变量吗? 是的,这就是我想要的。 您可以在您的应用程序中使用您想要的变量创建一个结构,然后从 firebase 检索后您可以将字典 [String: Any] 传递给该结构,然后您就可以得到您想要的。 【参考方案1】:

首先,您将在 casetExtend 节点中获取所有数据,您要分配的所有变量都不在该节点下。为此,您需要导航一级子节点。

ref.child("CaseExtend").queryOrdered(byChild: "userId").queryEqual(toValue: "OtRFaqilTigWvEkUCASvCoEegny1" ).observe(.value, with:  (snapshot) in
            for caseSnapshot in snapshot.children.allObjects as! [DataSnapshot] 

let dict = caseSnapshot.value as? [String: AnyObject] // assign the snapshot to a dictionary
let court = dict!["court"] as? String  ?? "unknown"; // assign the variable

      
        )

【讨论】:

以上是关于如何从 Firebase 快照添加变量的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 实时数据库使快照更有价值

如何从 Firebase 数据快照中获取密钥?

如何从孩子(firebase)查询所有孩子的值[重复]

(Android和Firebase)无法解析符号“dataSnapshot”[关闭]

如何从firebase中的变量为地图添加价值?

我该如何解决这个问题:Android Studio - Flutter - Dart - firebase [关闭]