Firebase 是否在给定路径下发送所有数据?



我对Firebase自动获取多少数据有点困惑,而且我很难对数据进行建模。

据我了解,经过身份验证的用户的ID与路径进行比较;如果缺少密钥,则无法访问该路径。此外,调用路径后,将访问其中的所有数据。

例如,获取/cart/<$uid>/<item>还包括$uid 1、$uid、$uid 3 ... $uidN等。因此,如果我将所有数据嵌套在/<$uid>下,例如:

/<$uid>/cart

/<$uid>/orders

/<$uid>/transactions

这是否意味着获取/<$uid>/cart也会返回所有其他键?如果我只打电话给<$uid>怎么办?

如果结构是先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,而不是购物车下的所有用户ID。

您还可以使用once('value').then(function(snapshot) {它只会读取一次数据,而不会再次触发。

最新更新