我有一个“用户”集合,其注册方法如下:
public class UserHelper {
public static final String COLLECTION_NAME = "USERTABLE";
public static CollectionReference getUserCollection(){
return FirebaseFirestore.getInstance().collection(COLLECTION_NAME);
}
public static Task<Void> createUser(String uid, String email, String password, String pseudo, String photo_url,boolean statut){
Usermodele usermodele = new Usermodele(uid,email,password,pseudo,photo_url,statut);
return UserHelper.getUserCollection().document(uid).set(usermodele);
}
字符串
对于这个类,我想创建一个子集合“AmisHelper”,我这样做是为了创建子集合,但似乎有些事情不去。
public class AmiHelper {
private static final String COLLECTION_NAME = "AMISCOLLECTION";
public static CollectionReference getAmiCollection(){
return FirebaseFirestore.getInstance().collection(COLLECTION_NAME);
}
public static Task<Void> createAmi(String idDemandeur, String idReceveur, String pseudo, String photo_url, String date_amitie){
AmisModele amisModele = new AmisModele(idDemandeur,idReceveur,pseudo,photo_url,date_amitie);
return UserHelper.getUserCollection().document(idDemandeur).collection("AMISCOLLECTION").document(idReceveur).set(amisModele);
}
型
在使用的时候,我做了这个
holder.boutonAjouter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(holder.itemView.getContext(), "clic position"+ position, Toast.LENGTH_SHORT).show();
UserHelper.getUserCollection().document(uid).collection("AMISCOLLECTION").document(uid).set(uid,uid,"","","");
}
});
型
我可能做了些不正常的事
当我点击“添加”按钮时,我有这个:
java.lang.IllegalArgumentException: Invalid data. Data must be a Map<String, Object> or a suitable POJO object, but it was of type: java.lang.String
at com.google.firebase.firestore.UserDataReader.convertAndParseDocumentData(com.google.firebase:firebase-firestore@@21.4.1:234)
at com.google.firebase.firestore.UserDataReader.parseSetData(com.google.firebase:firebase-firestore@@21.4.1:75)
at com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore@@21.4.1:166)
at com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore@@21.4.1:146)
at com.google.firebase.firestore.CollectionReference.add(com.google.firebase:firebase-firestore@@21.4.1:121)
at com.devolab.recapitulatif.adapter.TabAbonneAdapter$1.onClick(TabAbonneAdapter.java:79)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24697)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
型
1条答案
按热度按时间unhi4e5o1#
您将收到以下错误:
异常错误:无效数据。数据必须是Map或合适的POJO对象,但它的类型为:java.lang.String
因为您试图向文档写入一个String值,这实际上是不可能的。根据set()方法参数的官方文档:
要写入文档的数据(例如包含所需文档内容的Map或POJO)。
所以你不可能简单地写一个String,因此出现了这个错误。为了解决这个问题,向set()方法传递一个Map,其中包含属性的名称作为键,并包含该String的实际值作为值。该模式应如下所示:
字符串
您还可以使用POJO类的对象,就像在前两个共享示例中所做的那样。