reactjs - 无法匹配 Firebase 中的用户
问题描述
我无法从 firebase 随机获取用户
我正在使用 react native 和 firebase 做约会应用。
用户可以用google登录并设置他们的帐户,但我无法匹配用户。
我可以选择 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("users");
而不是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;
}
虽然此代码未经测试,但它基于这里的成功用例,我相信应该对您有所帮助。除此之外,您还可以获得另一种返回随机用户的方式,但现在使用索引,通过在此处检查此类似案例,以及来自 Firestore 的产品主管的非常完整的答案。
推荐阅读
- android - 出现错误说 - “条目名称 'res/layout/test_toolbar.xml' 碰撞”,同时创建签名的 apk
- java - MappedByteBuffer(在 Android Studio 中)构造函数损坏(超级构造函数损坏)
- google-cloud-firestore - 了解 Firebase Cloud Firestore 计费
- python - 如何将 csv 文件格式加载到 jupyter notebook?
- android - 自Android Q以来,如何将文件保存到具有范围存储的外部存储中,同时与android中的旧api级别兼容?
- google-chrome - 浏览器 MS Edge:如何从控制台导航到 DOM
- arrays - ics 阵列模拟掷骰子
- python - 如何在 Django 3.0.3+ 的 ./manage.py shell 中预加载变量?
- jupyter-notebook - 如何为 IJulia Jupyter 笔记本设置 Julia 环境?
- machine-learning - 为什么 PyTorch DQN 教程中的 CNN 卷积输出大小使用“kernel_size -1”计算?