我一直在阅读一些关于如何构建您的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)...
您仍会获得所有用户数据或仅获取电子邮件中的数据吗?
答案 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的对象。