Firebase Realtime Database在Unity3D中查询结果多出额外元素如何解决
Unity Firebase Realtime Database DataSnapshot返回异常问题说明
问题描述
在Unity3D中调用Firebase Realtime Database接口读取数据时,偶发出现DataSnapshot返回结果异常:查询得到的子项中多出了由数据库最后一条元素拆分出的额外字段。
运行环境
- Unity3D版本:2019.2.18f1
- Firebase版本:8.6.1
数据库结构
desks节点的存储数据如下:
"desks": { "0" : { "deskID" : 0, "deskName" : "Sol iç 1" }, "1" : { "deskID" : 1, "deskName" : "Sol iç 2" }, "2" : { "deskID" : 2, "deskName" : "Sol iç 3" }, "3" : { "deskID" : 3, "deskName" : "Sağ iç 1" }, "4" : { "deskID" : 4, "deskName" : "Sağ iç 2" }, "5" : { "deskID" : 5, "deskName" : "Sağ iç 3" }, "6" : { "deskID" : 6, "deskName" : "Sol dış 1" }, "7" : { "deskID" : 7, "deskName" : "Sol dış 2" }, "8" : { "deskID" : 8, "deskName" : "Sağ dış 1" }, "9" : { "deskID" : 9, "deskName" : "Sağ dış 2" }, "10" : { "deskID" : 10, "deskName" : "Sağ dış 3" }, "11" : { "deskID" : 11, "deskName" : "Sağ dış 4" }, "12" : { "deskID" : 12, "deskName" : "Sağ dış 5" }, "13" : { "deskID" : 13, "deskName" : "Sağ dış 6" }, "9999" : { "deskID" : 9999, "deskName" : "Personel" } }
相关代码
数据查询代码
FirebaseDatabase.DefaultInstance.GetReference("desks").GetValueAsync().ContinueWithOnMainThread((task) => { Desks desks = new Desks(); if (task.IsFaulted) { Debug.Log("error read desk data"); } else if (task.IsCompleted) { DataSnapshot snapshot = task.Result; Debug.Log(snapshot.ChildrenCount); if (snapshot.ChildrenCount > 0) { foreach (DataSnapshot snapshotChild in snapshot.Children) { try { Desk desk = JsonUtility.FromJson<Desk>(snapshotChild.GetRawJsonValue()); Debug.Log(desk.deskName); desks.desks.Add(desk); }catch(Exception ex) { Debug.Log(snapshotChild.Key); Debug.Log(snapshotChild.Value); Debug.Log(ex.Data); Debug.Log(ex.Message); } } } } });
Desk实体类定义
[Serializable] public class Desk { public int deskID; public string deskName; }
异常表现
预期desks节点应返回15个子节点,但是偶发返回17个子节点:第16个子节点Key为deskID、值为9999,第17个子节点Key为deskName、值为Personel,正好是原本Key为9999的子节点的两个字段被拆分当成了独立子节点返回。
修复结果
该问题参考Firebase官方维护者Frank van Puffelen的解答后已修复,连续测试30次均能正常获取到正确数据。
内容的提问来源于stack exchange,提问作者Emre Metilli
相关产品推荐
相关产品推荐

