Firebase:访问空/不存在的密钥及其子项

时间:2018-03-13 01:53:13

标签: javascript firebase firebase-realtime-database nosql database-normalization

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

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

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

这是有问题的,因为在向购物车添加商品时,我需要查看用户是否已经有购物车/我需要检查它是否为空。

我已将默认值(0)添加为默认值,现在访问ref.child('cart/' + user.uid).once()确实会返回null

权衡似乎是我需要&#34;种子&#34;具有默认值的新数据库,否则不会触发任何事件。

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

1 个答案:

答案 0 :(得分:1)

您需要执行以下操作:

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()检索的快照是否存在。