Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在用户集合Cloud Firestore中创建朋友子集合_Java_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Java 在用户集合Cloud Firestore中创建朋友子集合

Java 在用户集合Cloud Firestore中创建朋友子集合,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我有一个“用户”集合,其注册方法如下: public class UserHelper { public static final String COLLECTION_NAME = "USERTABLE"; public static CollectionReference getUserCollection(){ return FirebaseFirestore.getInstance().collection(COLLECTION_NAME);

我有一个“用户”集合,其注册方法如下:

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);
    }
我可能做了些不正常的事

当我点击“添加”按钮时,我看到:

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)
java.lang.IllegalArgumentException:无效数据。数据必须是映射或合适的POJO对象,但其类型为:java.lang.String
在com.google.firebase.firestore.UserDataReader.convertAndParseDocumentData上(com.google.firebase:firebase-firestore@@21.4.1:234)
位于com.google.firebase.firestore.UserDataReader.parseSetData(com.google.firebase:firebase-firestore@@21.4.1:75)
在com.google.firebase.firestore.DocumentReference.set上(com.google.firebase:firebase-firestore@@21.4.1:166)
位于com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore@@21.4.1:146)
在com.google.firebase.firestore.CollectionReference.add上(com.google.firebase:firebase-firestore@@21.4.1:121)
在com.devolab.repracituf.adapter.TabAbonneAdapter$1.onClick上(TabAbonneAdapter.java:79)
在android.view.view.performClick上(view.java:6256)
在android.view.view$PerformClick.run(view.java:24697)
位于android.os.Handler.handleCallback(Handler.java:789)
位于android.os.Handler.dispatchMessage(Handler.java:98)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6541)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

您遇到以下错误:

java.lang.IllegalArgumentException:无效数据。数据必须是映射或合适的POJO对象,但其类型为:java.lang.String

因为您正试图向文档写入字符串值,这实际上是不可能的。根据官方文件,关于:

要写入文档的数据(例如,包含所需文档内容的地图或POJO)

因此,无法简单地编写字符串,因此会出现错误。要解决这个问题,请向set()方法传递一个映射,其中包含属性名称作为键,该字符串的实际值作为值。架构应如下所示:

Firestore-root
   |
   --- USERTABLE (collection)
         |
         --- uid (document)
              |
              --- AMISCOLLECTION (collection)
                     |
                     --- uid (document)
                          |
                          --- fieldName: "StringValue"

您还可以使用POJO类的对象,正如您在前两个共享示例中所做的那样。

是的,Alex Mamo,您的回答让我回顾了我的录制方式。Actu我正在寻找一种方法来检索我单击的用户id。也就是说,我有一个recyclerview,我想恢复点击的id。非常感谢。
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)
Firestore-root
   |
   --- USERTABLE (collection)
         |
         --- uid (document)
              |
              --- AMISCOLLECTION (collection)
                     |
                     --- uid (document)
                          |
                          --- fieldName: "StringValue"