火力地堡的Web检索数据

火力地堡的Web检索数据

问题描述:

我在火力火力地堡的Web检索数据

enter image description here

以下数据库结构我试图抓住属于一个特定的用户ID(UID)数据。该文档有以下示例:

firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) { 
    var username = snapshot.val().username; 
    // ... 
}); 

但是,如何从我的示例中检索数据而无需知道每个对象的唯一键?

更新:

我尝试一种新的方法通过将用户ID作为主键,每个子对象都有它自己独特的ID。

enter image description here

现在面临的挑战是如何让“称号”的价值。

firebase.database().ref('/tasks/').orderByChild('uid').equalTo(userUID) 

那么这是非常简单的。那么你可以这样使用它:

return firebase.database().ref('/tasks/').orderByChild('uid').equalTo(userUID).once('value').then(function(snapshot) { 
    var username = snapshot.val().username; 
    // ... 
}); 

当然你需要设置userUID。

这是带有一些过滤的查询。更多关于Retrieve Data - Firebase doc

编辑:新的挑战的解决方案是:

var ref = firebase.database().ref('/tasks/' + userUID); 
//I am doing a child based listener, but you can use .once('value')... 
ref.on('child_added', function(data) { 
    //data.key will be like -KPmraap79lz41FpWqLI 
    addNewTaskView(data.key, data.val().title); 
}); 

ref.on('child_changed', function(data) { 
    updateTaskView(data.key, data.val().title); 
}); 

ref.on('child_removed', function(data) { 
    removeTaskView(data.key, data.val().title); 
}); 

请注意,这只是一个例子。

+0

谢谢!你认为最好的做法是将用户ID作为每个对象的主键吗?然后尝试检索每个子对象。 – CyberJunkie

+0

我已经对显示新结构的问题进行了更新。 – CyberJunkie

+1

这取决于使用场景。如果您构建待办事项列表,则最好使用用户标识作为主键。我将在一段时间内编辑答案以匹配您的问题编辑。 – pr0gramist