firebase简单 - 数据结构问题

时间:2017-04-29 17:53:28

标签: javascript firebase web firebase-realtime-database

我一直在阅读一些关于如何构建您的firebase数据库的内容,我知道您需要将数据拆分为多个部分,这样您就不会强迫客户端下载所有“用户”数据。

因此,在此示例中,您将在编写

时获取所有用户数据
  ref.('users').once('value', function(snap)...

    /users/uid
    /users/uid/email
    /users/uid/messages
    /users/uid/widgets 

但是如果你专门写了这个位置的路径而不是像

那样
ref.('users/uid/email').once('value', function(snap)...

您仍会获得所有用户数据或仅获取电子邮件中的数据吗?

1 个答案:

答案 0 :(得分:0)

在firebase中,您将ref设置为数据库的引用(整个数据库),然后您获得了迭代数据库对象的每个数据的方法,因此,一个好的做法是设置所有数据库作为参考,然后从那里工作,通过你想要去的地方。

// will select the whole db
const firebaseRef = firebase.database().ref();

// will select the whole app object of your db
const firebaseRef = firebase.database().ref().child('app');

// will select the whole users object of your db
const firebaseRef = firebase.database().ref().child('app/users');

因此,将firebaseRef之类的变量设置为整个firebase数据库然后从那里进行迭代是一种很好的做法。

现在,如果你写:

firebaseRef.child(`users/${uid}/email`).once('value').then(snapshot => {
  console.log('User email: ', snapshot.val());
}, e => {
  console.log('Unable to fetch value');
});

是的,你会得到你所要求的,但是你需要使用child方法来获取你的firebase ref的对象。

相关问题