javascript - Firebase 是否发送给定路径下的所有数据?

标签 javascript firebase vue.js nosql denormalization

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

据我了解,经过身份验证的用户 ID 会与路径进行比较;如果 key 丢失,则路径无法访问。此外,一旦调用路径,就会访问其中的所有数据。

例如,获取/cart/<$uid>/<item>还将包括 $uid1、$uid、$uid3 ... $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) {只会读取一次数据,不会再次触发。

关于javascript - Firebase 是否发送给定路径下的所有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49359357/

相关文章:

javascript - 通过 1.2.6 上的脚本事件触发 Jquery 自动完成

javascript - 使用 Mapbox gl js 将悬停时的弹出窗口添加到自定义标记

firebase - 执行 flutter run 时获取此日志输出的原因是什么 - 与设备失去连接 - ?

vue.js - 使用 chartJs 在 yAxis 中标记太长

javascript - Vuex 商店不更新状态

javascript - 有人愤怒地使用 Knockoutjs 和 asp.net-mvc 吗?

javascript - 我可以使用 Google Chrome 扩展程序阻止 alert() 吗

arrays - 计算 Firebase (Swift) 的结果数

javascript - Chrome 扩展 - 将 URL 从 popup.js 传递到 Firebase

node.js - 使用时出错 'vue create my-project' : Unexpected end of JSON input while parsing