Firebase:访问空的/不存在的键及其子键

Firebase: accessing empty / non-existent keys and their children

所以我有一个 "schema" 看起来像这样:

- orders
  - <$uid>
    - orderid
    - orderid
- transactions
  - <$uid>
    - transactionid

我已经尝试了几种访问方式,比如 orders/$uid/orderid,但看起来如果密钥本身为空,则永远不会创建 .once.on 的结果,甚至最初。

这是有问题的,因为在将东西添加到购物车时,我需要查看用户是否已有购物车/我需要检查它是否为空。

我添加了一个虚假值(0,特别是)作为默认值,现在访问 ref.child('cart/' + user.uid).once() 事实上 return null.

权衡似乎是我需要 "seed" 一个具有默认值的新数据库,否则不会触发任何事件。

我是不是遗漏了什么或者这是一种常见模式?如果不是,有什么更好的方法来处理本质上不存在且不触发事件的空键?

您需要执行以下操作:

ref.child("orders").orderByChild("orderid").equalTo(orderid).once("value",snapshot => {
var datas=snapshot.val();
if(datas){
  console.log("it exists");
 }
 else{
     console.log("doesn't exist");
  }
});

这是唯一的方法,上面将检查 once()on() 检索的快照是否存在。