无法将新数据保存在Firebase中 [英] Unable to save new data in firebase

查看:123
本文介绍了无法将新数据保存在Firebase中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在节点 Visitors 下的Firebase中保存新数据。

 Visitor:{
$ userId:{
.write:auth!= null&& $ userId === auth.uid,
.read:auth.uid!= null
} $




$ p

在我的应用程序中, pre> FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance();
FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

if(mFirebaseUser == null){

} else {
String mUserId = mFirebaseUser.getUid();
DatabaseReference vRef = mDatabase.getReference(MyFirebaseConstants.DATABASE_Visitor);
DatabaseReference newVisitorRef = vRef.child(mUserId).push();
字符串visitorKey = newVisitorRef.getKey();

访客访客=新访客()// POJO
//其他几位设定员

visitor.setId(visitorKey);
newVisitorRef.setValue(property);

我的访客pojo扩展了RealmObject并实现了Parcelable



但是得到以下错误:

  java.lang.StackOverflowError 
at java .lang.reflect.Method.invokeNative(Native方法)$ b $在java.lang.reflect.Method.invoke(Method.java:525)
在com.google.android.gms.internal.zzamy $ zza.zzci(未知来源)
在com.google.android.gms.internal.zzamy.zzca(未知来源)
在com.google.android.gms.internal.zz
/ /和更多像这样

我的访客pojo

  public class Visitor extends RealmObject implements Parcelable {

@PrimaryKey
private long timeStamp;
私人字符串visitorId;
private String phoneNumber =;
private String profileUri =;

public Visitor(){

}

保护访客(包裹在){
timeStamp = in.readLong();
visitorId = in.readString();
phoneNumber = in.readString();
profileUri = in.readString();
}

public static final Creator< Visitor> CREATOR = new Creator< Visitor>(){
@Override
public Visitor createFromParcel(Parcel in){
return new Visitor(in);

$ b @Override
public Visitor [] newArray(int size){
return new Visitor [size];
}
};

@Override
public int describeContents(){
return 0;

$ b @Override
public void writeToParcel(Parcel dest,int flags){
dest.writeLong(timeStamp);
dest.writeString(visitorId);
dest.writeString(phoneNumber);
dest.writeString(profileUri);
}
public void setTimeStamp(long timeStamp){
this.timeStamp = timeStamp;
}

public long getTimeStamp(){
return this.timeStamp;
}

public void setVisitorId(String visitorId){
this.visitorId = visitorId;
}

public void setPhoneNumber(String phoneNumber){
this.phoneNumber = phoneNumber;
}

public Uri getProfileUri(){
return Uri.parse(profileUri);

public void setProfileUri(Uri profileUri){
this.profileUri = profileUri.toString();


$ b


解决方案

我知道问题在哪里pojo

  public Uri getProfileUri(){
return Uri .parse(profileUri);


public void setProfileUri(Uri profileUri){
this.profileUri = profileUri.toString();





区域支持 Uri Uri 作为参数,但firebase数据库不是



<所以在我的pojo,我改成了

  public String getProfileUri(){
return profileUri;
}
public void setProfileUri(String profileUri){
this.profileUri = profileUri;
}


I am trying to save new data in firebase under a node Visitors. i have already set some rules on that node.

"Visitor":{
  "$userId":{
    ".write": "auth != null && $userId === auth.uid",
      ".read": " auth.uid != null"
  }
},

In my app

FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance();
FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

if(mFirebaseUser == null){

}else{
  String mUserId = mFirebaseUser.getUid();
  DatabaseReference vRef = mDatabase.getReference(MyFirebaseConstants.DATABASE_Visitor);
  DatabaseReference newVisitorRef = vRef.child(mUserId).push();
  String visitorKey = newVisitorRef.getKey();

 Visitor visitor = new Visitor()//POJO
  // other few setters

  visitor.setId(visitorKey);
  newVisitorRef.setValue(property);

my visitor pojo extends RealmObject and implements Parcelable

But am getting the following error

 java.lang.StackOverflowError
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:525)
 at com.google.android.gms.internal.zzamy$zza.zzci(Unknown Source)
 at com.google.android.gms.internal.zzamy.zzca(Unknown Source)
 at com.google.android.gms.internal.zz
 //and many more like this

My visitor pojo

      public class Visitor extends RealmObject implements Parcelable{

       @PrimaryKey
      private long timeStamp;
      private String visitorId;
      private String phoneNumber="";
      private String profileUri="";

      public Visitor(){

      }

    protected Visitor(Parcel in) {
    timeStamp = in.readLong();
    visitorId = in.readString();
    phoneNumber = in.readString();
    profileUri = in.readString();
    }

  public static final Creator<Visitor> CREATOR = new Creator<Visitor>() {
    @Override
    public Visitor createFromParcel(Parcel in) {
      return new Visitor(in);
    }

    @Override
    public Visitor[] newArray(int size) {
      return new Visitor[size];
    }
  };

  @Override
  public int describeContents() {
    return 0;
  }

  @Override
  public void writeToParcel(Parcel dest, int flags) {
    dest.writeLong(timeStamp);
    dest.writeString(visitorId);
    dest.writeString(phoneNumber);
    dest.writeString(profileUri);
  }
      public void setTimeStamp(long timeStamp){
      this.timeStamp = timeStamp;
      }

      public long getTimeStamp(){
       return this.timeStamp;
      }

      public void setVisitorId(String visitorId){
      this.visitorId = visitorId;
      }

      public void setPhoneNumber(String phoneNumber){
       this.phoneNumber = phoneNumber;
      }

      public Uri getProfileUri() {
        return Uri.parse(profileUri);
      }
      public void setProfileUri(Uri profileUri) {
        this.profileUri = profileUri.toString();
      }

    }

解决方案

I got to know where the problem is in my pojo

public Uri getProfileUri() {
    return Uri.parse(profileUri);
  }

  public void setProfileUri(Uri profileUri) {
    this.profileUri = profileUri.toString();
  }

Realm is supporting getters of type Uri and setters with type Uri as parameter but firebase database does not.

so in my pojo, i changed to

public String getProfileUri() {
    return profileUri;
  }
  public void setProfileUri(String profileUri) {
    this.profileUri = profileUri;
  }

这篇关于无法将新数据保存在Firebase中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆