【发布时间】:2019-02-28 00:08:07
【问题描述】:
我希望从 firebase 数据库访问嵌套的 JSON 数据以在 listView 中使用,这是我在整个应用程序中应用的内容,但现在无法访问具有动态属性的数据的子项。
从我的数据库导出我的 JSON 数据是;
{
"T&G Canary Wharf" : {
"Administrator" : {
"1550633367665" : {
"date" : "2019-02-12T12:00:00.000",
"details" : "Full Day",
"name" : "Edward Lawrence",
"status" : "pending"
},
"1550633370715" : {
"date" : "2019-02-13T12:00:00.000",
"details" : "Full Day",
"name" : "Edward Lawrence",
"status" : false
},
"1550845072137" : {
"date" : "2019-02-12T12:00:00.000",
"details" : "Full Day",
"name" : "Katie Prescott ",
"status" : 1
},
},
"Stylist" : {
"1551222170677" : {
"date" : "2019-02-19T12:00:00.000",
"details" : "Full Day",
"name" : "Stylist Stylist",
"status" : "pending"
}
}
}
}
对于应用程序的每个用户,group(在上面的示例中为 T&G Canary Wharf)将始终设置,但 subgroup(在示例中为管理员和造型师)对于管理员来说是动态的,这就是我所在的位置挣扎,
我的 firebase 数据库读取代码如下:
我正在使用 felgo(以前的 v-play),指向他们的 firebase 文档的链接是:
App {
property var adminModel: []
property var groupName //the group name is assigned onLoggedIn, in this example group name === T&G Canary Wharf
FirebaseDatabase {
onLoggedIn: {
firebaseDb.getValue("groups" + "/" + groupName, {
orderByValue: true
}, function(success, key, value) {
if(success){
console.log("ADMIN MODEL: " + JSON.stringify(value))
adminModel = value // my array where I intend to push the data too
}
})
}
}
}
我一直在阅读;
access/process nested objects, arrays or JSON
(顺便说一句超级有用)特别是 如果属性名称是动态的并且我事先不知道它们怎么办?
我可以创建两个列表条目,Administrator 和 Stylist(子组,但它的子键也是动态的(创建条目的时间,例如:“1550633367665”),我看不到更进一步?
要创建这个模型,我有代码:
ListPage {
id: adminPage
model: Object.keys(adminModel)
delegate: SwipeOptionsContainer {
id: container
rightOption: SwipeButton {
anchors.fill: parent
backgroundColor: "red"
icon: IconType.trash
onClicked: {
container.hideOptions()
}
}
SimpleRow {
id: userRow
width: parent.width
text: modelData
}
}
}
我的问题是
我如何创建一个listView,其代表是包含"status" : "pending" 的任何对象 - 在其他区域使用if (value[i].status === pending) { arr.push({...})} 循环完成,但subgroup (Stylist/Administrator) 未知,来自上面的数据库示例将是 2 个列表元素,但实际上将包含更多带有多个 subGroup 的元素。
【问题讨论】:
-
不要描述您的代码,而是向我们展示minimal actual code that reproduces what you're struggling with。这使得更有可能有人能够并且将会提供帮助。请参阅how to create a minimal, complete, verifiable example 以获取更多有关此功能为何有用以及如何进一步增加机会的提示。
-
另外请注意,如果您包含实际的 JSON(作为文本,没有屏幕截图),它会更容易提供帮助。您可以通过单击Firebase Database console 的溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
-
@FrankvanPuffelen 嗨弗兰克,感谢下面的反馈和回答,我已经用我的数据库的 JSON 提取更新了我的答案,还用我的代码从 firebase 读取以获得更好的上下文,如果你还需要什么,谢谢!
-
我有点不知道您使用什么库来访问 Firebase。
firebaseDb.getValue(...是什么? -
嗨@TrebuchetMS 我已经用
ListPage代码为我的Object.keys更新了我的评论,抱歉没有说明,当我知道数据库的直接键时,我可以为模型创建数组,但它正在访问我正在努力解决的动态路径的孩子,如果您需要更多信息,请告诉我! (希望我已经给够了)谢谢
标签: javascript json firebase qml v-play