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()
检索的快照是否存在。
所以我有一个 "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()
检索的快照是否存在。