java根据id求对象_通过Firebase通过ID检索Java对象

在Android应用中,从Firebase Realtime Database按ID获取User对象。遇到问题,尝试官方文档未成功。已实现方法retrieveUser(String email),但返回的User对象为null。最终解决方案是直接通过用户ID匹配并获取User对象。
摘要由CSDN通过智能技术生成

我正在编写一个Android应用程序,并且试图从其Firebase相关表中按ID检索类User.java的对象.我想知道如何从Java端获取它,只要我尝试了Firebase Official docs中说明的示例,但是它们对我来说都不起作用.

以这个SO问题为例,我想要一个具有以下接口的方法:

public User readUser(String userId);

换句话说,我要执行:

readUser(-lnnROTBVv6FznK81k3n)

并检索关联的User对象

谢谢

————————————————– – – – – – – 编辑 – – – – – – – – – – – – – – – – – – – ————————-:

我设法通过以下代码获得了价值:

public void retrieveUser(final String email){

firebaseUsersRef.addValueEventListener(new ValueEventListener() {

@Override

public void onDataChange(DataSnapshot dataSnapshot) {

for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) {

if(messageSnapshot.getKey().equals(Email.encodeID(email))){

retrievedUser = messageSnapshot.getValue(User.class);

break;

}

}

}

@Override

public void onCancelled(FirebaseError firebaseError) { }

});

}

请不要取回User是一个类属性,因此是一个字段.我正在从代码访问该字段,但是即使我看到它在调试器上使用了该值,在调用代码上也为null.

有什么提示吗?我不能只在方法本身中返回它吗?

public User retrieveUser(final String email);

谢谢

解决方法:

所以这是灵魂,虽然我没有把它放在方法上.

final String uid = "your Uid here";

// Get a reference to users

Firebase ref = new Firebase(Constants.FIREBASE_URL_USERS);

// Attach an listener to read our users

ref.addValueEventListener(new ValueEventListener() {

@Override

public void onDataChange(DataSnapshot snapshot) {

for (DataSnapshot user: snapshot.getChildren()) {

//this is all you need to get a specific user by Uid

if (user.getKey().equals(uid)){

wantedUser = user.getValue(User.class);

}

//**********************************************

}

Log.i(TAG, "onDataChange: " + wantedUser.getName());

}

@Override

public void onCancelled(FirebaseError firebaseError) {

System.out.println("The read failed: " + firebaseError.getMessage());

}

});

标签:firebase,firebase-realtime-database,java,android

来源: https://codeday.me/bug/20191118/2030438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值