Firebase –文档引用必须具有偶数个段,但是Rezepte的段数为1

时间:2020-09-25 19:28:40

标签: java android firebase android-studio google-cloud-firestore

好吧,所以我生成了一个文档的随机名称,现在我正试图从该文档中获取数据。

        namereference
                .get()
                .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                    @Override
                    public void onSuccess(DocumentSnapshot documentSnapshot) {
                        if (documentSnapshot.exists()){
                            String names = documentSnapshot.get("dokumentnamen").toString().replace("[", "").replace("]", "");
                            String [] namelist = names.split(", ");
                            Random random = new Random();
                            int randomNumber = random.nextInt(namelist.length);
                            randomrezeptname = namelist[randomNumber];

                        }
                    }
                });
    } 

生成一个随机名称可以正常工作,并且该名称存在。 但是现在我正在尝试在另一个void的DocumentReference中使用该String,但根本无法使用。

DocumentReference documentReference = db.collection("Rezepte").document(this.randomrezeptname);

我总是遇到相同的错误:

无效的文档参考。文档引用的段数必须是偶数,但是Rezepte的段数是1

我尝试使用String的内容,并将其直接放在DocumentReference中,并且可以正常工作。但是我必须使用一个变量,因为它应该显示随机文档。 有任何想法我做错了吗?

1 个答案:

答案 0 :(得分:0)

我猜你说的时候

我尝试使用String的内容并将其直接放在DocumentReference中,并且有效

你的意思是你跑了

DocumentReference documentReference = db.collection("Rezepte").document("a_random_recipe_name");

它奏效了,表明您的层次结构还不错。

在您尝试使用随机名称生成器访问随机文档之前,您确定它确实设置了randomrezeptname吗?我的意思是说,如果您运行:

1) namereference.get().addOnSuccessListener(OnSuccessListener);
2) System.out.println(this.randomrezeptname)
3) DocumentReference documentReference = db.collection("Rezepte").document(this.randomrezeptname)

第2行和第3行可能会在运行OnSuccessListener之前运行,这意味着在OnSuccessListener对其进行设置之前,randomrezeptname周围的任何行为都会有些奇怪。稍后,OnSuccessListener在主线程上运行,但是要在异步方法返回之后运行。