如何使用Javascript中的userID在Firebase中查询数据?

时间:2018-11-26 12:58:45

标签: javascript html json firebase firebase-realtime-database

我需要从“用户节点”中查询用户信息,然后将其显示在html表中,到目前为止,我只能将Firebase数据库中“请求节点”的状态子级查询到html表中。

如何查询其uid存在的每个节点中每个用户的信息? 这是我的结构,到目前为止,我可以显示待处理状态。由于用户只有1个uid,因此我认为可以在每个用户的待处理状态旁边显示其名称。

Target Data] 1

这是我查询待处理状态的方法,

var database = firebase.database().ref().child('Request').child('Pending');
database.once('value', function(snapshot){
    snapshot.forEach(function(data){
       var ReqStatus = data.val().request_status;
      content +='<tr>'
      content +='<td>' + ReqStatus+ '</td>'; 
      content +='</tr>';
});
    $('#mytable').append(content);
}
);

1 个答案:

答案 0 :(得分:1)

要同时为每个请求加载用户数据,则需要使用其他监听器。最简单的方法是这样的:

PIC X VALUE X'00'.

有关此方法的一些注意事项:

  1. 您要对Firebase进行更多调用,但是自Firebase pipelines those requests起,性能通常会很好。
  2. 如果一个用户有多个请求,则需要为该用户多次加载节点。如果这是您应用程序的真实用例,则可能要保留最近加载的用户的缓存。
  3. 此代码加载整个用户节点。如果只需要它们的名称,则可以在var root = firebase.database().ref(); var database = root.child('Request').child('Pending'); database.once('value', function(snapshot){ snapshot.forEach(function(data){ var reqStatus = data.val().request_status; var uid = data.key; root.child('User').child(uid).once('value', function(userSnapshot) { var username = userSnapshot.val().username; content += '<tr>' content += '<td>' + username+ '</td><td>' + reqStatus+ '</td>'; content += '</tr>'; }) }); $('#mytable').append(content); }); 子节点上侦听以减少带宽使用:username
  4. 正如André所说:您可能希望将作者的用户名存储在每个请求节点中,以减少读取次数并简化代码。在JavaScript中做到这一点非常简单:

    root.child('User').child(uid).child('username').once('value'...