Javascript 如何在firebase数据库中添加indexOn用户ID
我犯了一个错误 使用未指定的索引。您的数据将在客户端上下载和筛选。考虑向您的安全规则添加“.Noxon”:“WKJYMETHVGZQZZXX3VUTBML2HUGN”AT /产品,以获得更好的性能。 这是我的代码:Javascript 如何在firebase数据库中添加indexOn用户ID,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我犯了一个错误 使用未指定的索引。您的数据将在客户端上下载和筛选。考虑向您的安全规则添加“.Noxon”:“WKJYMETHVGZQZZXX3VUTBML2HUGN”AT /产品,以获得更好的性能。 这是我的代码: firebase.database().ref("Products").orderByChild(user.uid + "quan").startAt(0).on('value', function (s) { var cart
firebase.database().ref("Products").orderByChild(user.uid + "quan").startAt(0).on('value', function (s) {
var cartNum = 0;
s.forEach(function (d) {
console.log(d.child(user.uid + "quan").val());
cartNum += d.child(user.uid + "quan").val();
});
$("#cartCount").text(cartNum);
});
我试图查询在我的firebase数据库中有user.uid+'quan'
的产品
这是我的JSON的结构-->>>
如果有人能帮我,非常感谢
如索引数据文档和错误消息中所述,您需要在控制台中为数据库的Firebase规则添加索引:
{
"rules": {
"Products": {
".indexOn": "WkJymEhTtvgtIzQZZxs3VUTbmLh2quan"
}
}
}
这将解决当前用户的错误消息。问题是您需要为每个UID显式地声明这样的索引,除非您考虑到一组特定的用户,否则这是不可行的
潜在的问题是,您当前的数据结构使查找给定产品的用户变得很容易,但却不便于查找特定用户的产品。为了允许使用后一种用例,您需要为该反向映射添加额外的数据结构,有时称为反向或反向索引:
"Users": {
"uid1": {
"productId1": true,
"productId2": true
},
"uid2": {
"productId3": true,
"productId4": true
}
}
虽然这复制了一些数据,但它允许您在两个方向上查找相关数据。这种允许用例的数据复制在NoSQL数据库中非常常见
另见:
$unknown
,用于跳过动态节点,解决了很多问题,谢谢