我試圖在節點Visitors
下的Firebase中保存新數據。我已經在該節點上設置了一些規則。無法在Firebase中保存新數據
"Visitor":{
"$userId":{
".write": "auth != null && $userId === auth.uid",
".read": " auth.uid != null"
}
},
在我的應用程序
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);
我的客人POJO擴展RealmObject並實現Parcelable
,但我收到以下錯誤
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
我的客人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();
}
}
顯示烏爾POJO代碼 – uguboz
這個問題與答案在這裏轉貼:http://stackoverflow.com/q/40319118/4815718 –
@qbix這是一個不同的情況。但我能弄清楚這個問題。檢查我的回答 –