火力地堡的Web检索数据
问题描述:
我在火力火力地堡的Web检索数据
以下数据库结构我试图抓住属于一个特定的用户ID(UID)数据。该文档有以下示例:
firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) {
var username = snapshot.val().username;
// ...
});
但是,如何从我的示例中检索数据而无需知道每个对象的唯一键?
更新:
我尝试一种新的方法通过将用户ID作为主键,每个子对象都有它自己独特的ID。
现在面临的挑战是如何让“称号”的价值。
答
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);
});
请注意,这只是一个例子。
谢谢!你认为最好的做法是将用户ID作为每个对象的主键吗?然后尝试检索每个子对象。 – CyberJunkie
我已经对显示新结构的问题进行了更新。 – CyberJunkie
这取决于使用场景。如果您构建待办事项列表,则最好使用用户标识作为主键。我将在一段时间内编辑答案以匹配您的问题编辑。 – pr0gramist