如何在Firebase中为React本地订购点数据

问题描述 投票:-1回答:3

这是我的firebase,我使用的是实时数据库

我想按点订购用户名并列出反应原生的前10名高点用户,但我尝试了firebase订单方法而我不能。

我试过这样的:

let ref = firebase.database().ref('/users'); 
ref
 .orderByChild('TotalPoint')
 .limitToFirst(10)
 .on('value', function(snapshot) { console.log(snapshot.val()); }); 

但是不行

我应该使用什么firebase方法?

javascript reactjs firebase react-native firebase-realtime-database
3个回答
1
投票

您的代码有两个问题:

  1. 您需要在Point/TotalPoint上订购,因为这是您要为每个用户订购的价值的路径。
  2. 您需要处理结果的顺序,因为当您调用val()时项目的顺序会丢失(因为未定义JavaScript对象中属性的顺序)。

然后整个片段变为:

let ref = firebase.database().ref('/users'); 
ref
 .orderByChild('Point/TotalPoint')
 .limitToFirst(10)
 .on('value', function(snapshot) { 
    snapshot.forEach(function(user) {
      console.log(user.val()); 
    });
  }); 

0
投票

我认为你应该使用这些方法

.orderByChild("TotalPoint")所以你根据“点”进行查询

.limitToFirst("10")设置从有序结果列表的开头返回的最大项数等于10。


0
投票

我解决了这个方法,改变了我的firebase规则;

 {
 "rules":{
    "users":{
        "$uid":{
                ".read":"$uid === auth.uid",
                ".write": "$uid === auth.uid"
                }
            },
 }
 }

改为这个=>

 {
 "rules":{
   ".read":true,
    "users":{
        "$uid":{
                ".read":"$uid === auth.uid",
                ".write": "$uid === auth.uid"
                },
            },
 }
 }

并尝试@Frank van Puffelen分享方法是工作谢谢

© www.soinside.com 2019 - 2024. All rights reserved.