Reactjs 无法匹配firebase中的用户

Reactjs 无法匹配firebase中的用户,reactjs,react-native,firebase-realtime-database,google-cloud-firestore,Reactjs,React Native,Firebase Realtime Database,Google Cloud Firestore,我无法从firebase随机获取用户 我正在用react native和firebase开发约会应用程序 用户可以登录谷歌并设置他们的帐户,但我无法匹配用户 我可以选择1个用户,但无法显示用户的数据 我试过: 我尝试从firebase实时数据库获取所有用户 我可以选择1个用户并记录用户的详细信息,但无法在应用程序中显示 有时,即使我登录,user.uid也会返回null function getRandomUser() { const numberOfUsers = 15; cons

我无法从firebase随机获取用户

我正在用react native和firebase开发约会应用程序

用户可以登录谷歌并设置他们的帐户,但我无法匹配用户

我可以选择1个用户,但无法显示用户的数据

我试过:

  • 我尝试从firebase实时数据库获取所有用户
  • 我可以选择1个用户并记录用户的详细信息,但无法在应用程序中显示
有时,即使我登录,
user.uid
也会返回null

function getRandomUser() {
  const numberOfUsers = 15;
  const randomIndex = Math.floor(Math.random() * numberOfUsers);
  var ref = firebase.database().ref("/users/");

  ref
    .limitToFirst(1)
    .once("value")
    .then((snapshot) => {
      var randomUser = snapshot.val();      
      console.log(randomUser);
      console.log(randomUser.bio);//this is not even display in console
    });
}

我认为您应该改变引用数据库的方式,因此它应该是
var ref=firebase.database().ref(“用户”)而非
var ref=firebase.database().ref(“/users/”)

在此之后,您需要执行一些与随机数和比较问题相关的更改,因此返回值。请使用下面的代码尝试一下

    var dbUser = firebase.database(); 
    var refUser = dbUser.ref("<collection>");
    refUser.orderByChild("online").equalTo(1).on("value", function(Data){
    var numberOfUsers = 15;
    var randomIndex = Math.random() * numberOfUsers;
    var userIndex = parseInt(randomIndex, 10); //parse the random number from double to integer
    var currentIndex = 0;
    var BreakException = {};
    try
    {
        Data.forEach(function(snap){
            if(currentIndex==userIndex){
                var randomUser = snap.val();
                //Do something with your random user
                throw BreakException;
            }
            currentIndex++;
        });
    }
    catch(e){
        if(e!== BreakException) throw e;
    }
var dbUser=firebase.database();
var refuer=dbUser.ref(“”);
REQUERSER.orderByChild(“在线”).equalTo(1).on(“值”),函数(数据){
var numberOfUsers=15;
var randomIndex=Math.random()*numberOfUsers;
var userIndex=parseInt(randomIndex,10);//将随机数从双精度解析为整数
var currentIndex=0;
var BreakException={};
尝试
{
Data.forEach(函数(snap){
if(currentIndex==userIndex){
var randomUser=snap.val();
//对你的随机用户做点什么
抛出异常;
}
currentIndex++;
});
}
捕获(e){
如果(e!==BreakException)抛出e;
}

虽然此代码未经测试,但它基于此成功的用例,我相信应该会对您有所帮助。除此之外,您还可以通过索引获得另一种返回随机用户的方法,但现在,通过检查此类似的情况,从Firestore的产品线索中获得一个非常完整的答案。

我得到referenceError:找不到变量:DataHi@tunangündüz您可以尝试删除
数据
。否则,请尝试使用我更新的新代码。此外,请记住,您需要修改此代码,因为它未经测试,应该用作您应用程序的基础。