gpt4 book ai didi

android - 返回存储在 Firebase Android 中的值

转载 作者:行者123 更新时间:2023-11-29 19:30:27 27 4
gpt4 key购买 nike

我看了几个关于这个问题的答案,但是我在 Firebase Android App 的答案中仍然有 null 。其中之一是:

Firebase retrieve/read returns null values - Android

我的问题:

我可以写入 Firebase,但无法读取值。

我尝试:

1 更改 Firebase 规则的值:

{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}

到:

{
"rules": {
".read": true,
".write": true
}
}

但没有用,我可以写但不能读值。

我的代码:

 private void postComment() {
//final String uid = getUid();
FirebaseDatabase.getInstance().getReference().child("users")/*.child("KU1y_SLZGLZpJB2j_Pc")*/
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get user information
UserClassGu user = dataSnapshot.getValue(UserClassGu.class);
String authorName = user.name;
Log.d(TAG,"name read into postCopmment = "+authorName);


}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}

这是我在 getValue(UserClassGu.class) 中使用的类

/** * 由 Cliente 创建于 14/10/2016。 */

public class UserClassGu {

public String userUid;
public String email;
public String name;
public String telephone;

public UserClassGu() {

}

public String getUserUid() {
return userUid;
}

public UserClassGu(String userUid, String email, String name, String telephone) {
userUid = userUid;
this.email = email;
this.name = name;
this.telephone = telephone;
}

public void setUserUid(String userUid) {
userUid = userUid;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getTelephone() {
return telephone;
}

public void setTelephone(String telephone) {
this.telephone = telephone;
}


}

我的数据库:

{
"messages" : {
"-KU87z9hSXew-Li37xgF" : {
"destinatario" : "ad@g.com",
"name" : "app app",
"photoUrl" : "https://lh5.googleusercontent.com/-jjv4PSa0NzA/AAAAAAAAAAI/AAAAAAAAAAA/APaXHhQm8WxqRupmfbe87U11m9pfn9C9ag/s96-c/photo.jpg",
"text" : "hello"
},
"-KU88ciYGXz39PZGZW98" : {
"destinatario" : "rere",
"name" : "app app",
"photoUrl" : "https://lh5.googleusercontent.com/-jjv4PSa0NzA/AAAAAAAAAAI/AAAAAAAAAAA/APaXHhQm8WxqRupmfbe87U11m9pfn9C9ag/s96-c/photo.jpg",
"text" : "adafa"
}
},
"messages_private" : {
"rere" : {
"553xVAMEVcQZPKNVqfal8S9tOM03" : {
"-KU88ciZUNQkCskad6Xc" : {
"destinatario" : "rere",
"name" : "app app",
"photoUrl" : "https://lh5.googleusercontent.com/-jjv4PSa0NzA/AAAAAAAAAAI/AAAAAAAAAAA/APaXHhQm8WxqRupmfbe87U11m9pfn9C9ag/s96-c/photo.jpg",
"text" : "adafa"
}
}
}
},
"users" : {
"-KU3ZlBN-gmHZOhg74-M" : {
"email" : "app@gmail.com",
"name" : "app app",
"telephone" : ""
},
"-KU3_ZjTHJHprd36xT1u" : {
"email" : "appa@gmail.com",
"name" : "app app",
"telephone" : ""
}
}
}

最佳答案

我解决了将数据路径更改为 Firebase 的问题:

进入 UserGu 类:

  1. 我忘了写getter getUserUid()

    公共(public)字符串 getUserUid() { 返回用户名;

2.我要读取的数据的数据库Firebase路径不对:我改为: mFirebaseDatabaseReference.child("users").child(mUserUid).setValue(userClassGu);

UserClassGu userClassGu = UserClassGu(mUserUid,mUserEmail,mUsername,"");   



mFirebaseDatabaseReference.child("users").child(mUserUid).setValue(userClassGu);


//Write data of users
mFirebaseDatabaseReference.child("users").child(mUserUid).setValue(userClassGu);


//Reading the data


mFirebaseDatabaseReference.child("users").child(mUserUid).addValueEventListener(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get user value
UserClassGu userClassgu = dataSnapshot.getValue(UserClassGu.class);
Log.d(TAG,"reading data :userClassgu.email = "+userClassgu.email);
Log.d(TAG,"reading data :userClassgu.name: = "+userClassgu.name);
Log.d(TAG,"reading data :userClassgu.telephone: = "+userClassgu.telephone);
Log.d(TAG,"reading data :userClassgu.userUid: = "+userClassgu.userUid);
// ...
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
// ...
}
});

在 userClassGu 类中,我放置了方法:

@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("uid", userUid);
result.put("email", email);
result.put("name", name);
result.put("telephone", telephone);
return result;
}

我将 int 类 UserClassGuthe 文本:@IgnoreExtraProperties

userClassGu类的代码变成了:

package com.sciencesoftware.friends;

import com.google.firebase.database.Exclude;
import com.google.firebase.database.IgnoreExtraProperties;

import java.util.HashMap;
import java.util.Map;

/**
* Created by Cliente on 14/10/2016.
*/
@IgnoreExtraProperties
public class UserClassGu {
public String userUid;
public String email;
public String name;
public String telephone;

public UserClassGu() {
// Default constructor required for calls to DataSnapshot.getValue(UserClassGu.class)

}

public UserClassGu(String userUid, String email, String name, String telephone) {
this.userUid = userUid;
this.email = email;
this.name = name;
this.telephone = telephone;
}


public String getUserUid() {
return userUid;
}





public void setUserUid(String userUid) {
this.userUid = userUid;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getTelephone() {
return telephone;
}

public void setTelephone(String telephone) {
this.telephone = telephone;
}


@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("uid", userUid);
result.put("email", email);
result.put("name", name);
result.put("telephone", telephone);
return result;
}



}

3。这是 Firebase 的 JSON:

{
"users" : {
"Bl0AiMMUXsV2H58lqoj0rO8457j1" : {
"email" : "myEmail@gmail.com",
"name" : "my name",
"telephone" : "",
"userUid" : "Bl0AiMMUXsV2H58lqoj0rO8457j1"
}
}
}

研究文档:将数据放入数据库的类必须:1 有一个空的构造函数:2 有一个包含变量所有参数的构造函数 -(我对此并不完全正确)该类的变量必须是公共(public)的,或者必须将所有 getter 都公开(我对此并不完全正确)。3 拥有所有 setter/getter 。4 不需要二传手。

如果我对以上这 4 件事说错了,如果有人纠正我,我会很高兴。

关于android - 返回存储在 Firebase Android 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40054409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com