Javascript Firebase是否发送给定路径下的所有数据?
对于Firebase自动获取多少数据,我有点困惑,我很难对数据进行建模 据我所知,经过身份验证的用户ID与路径相比较;如果缺少密钥,则无法访问路径。此外,一旦调用路径,就会访问其中的所有数据 例如,获取Javascript Firebase是否发送给定路径下的所有数据?,javascript,firebase,vue.js,nosql,denormalization,Javascript,Firebase,Vue.js,Nosql,Denormalization,对于Firebase自动获取多少数据,我有点困惑,我很难对数据进行建模 据我所知,经过身份验证的用户ID与路径相比较;如果缺少密钥,则无法访问路径。此外,一旦调用路径,就会访问其中的所有数据 例如,获取/cart/还包括$uid1、$uid、$uid3$uidN等。如果我将所有数据嵌套在/下,比如: //购物车 //订单 //交易 这是否意味着获取//cart也会返回所有其他键?如果我只调用 如果结构由cart/或orders/代替,这是否意味着所有用户的所有订单都已提取 换句话说,当用户登录时
/cart/
还包括$uid1、$uid、$uid3$uidN等。如果我将所有数据嵌套在/
下,比如:
//购物车
//订单
//交易
这是否意味着获取//cart
也会返回所有其他键?如果我只调用
如果结构由cart/
或orders/
代替,这是否意味着所有用户的所有订单都已提取
换句话说,当用户登录时,我希望检索购物车的内容(使用其中一个“模式”):
// Fires onAuthStateChanged()
firebaseListener(function authStateChange(loggedIn, user) {
if (store) {
if (user) {
store.dispatch('getShoppingCart', { uid: user.uid, currentCart: store.getters.cartItemList });
store.dispatch('setUser', user);
}
}
})
getShoppingCart
然后运行类似于:
let ref = db.ref('/cart/' + store.state.uid + '/')
ref.on('value', (snapshot) => {
store.cart.concat(snapshot)
})
当用户登录时,您正在检索该用户的信息,因此当您使用
uid
时,您正在检索该登录用户的id
使用此ref('/cart/'+store.state.uid+'/')
时,它将首先转到cart
节点,然后是该用户的uid
,而不是位于carts下的所有用户标识
您也可以使用
一次('value')。然后(函数(快照){
,它将只读取一次数据,不会再次触发。请添加一些(伪)代码来解释在这种情况下抓取的含义。@AndréKool就这么简单;我的问题更多的是关于设计模式。如果cart是第一位的,userID是第二位的,这是否意味着以这种方式访问路径意味着,如果不是在快照中,至少会考虑每个子用户cart?我认为您混淆了安全规则($uid通配符)和firebase中的实际读/写。您可以链接到从何处获取此信息吗?