【发布时间】:2021-01-12 03:40:15
【问题描述】:
好的,所以我生成了一个文档的随机名称,现在我正在尝试从该文档中获取数据。
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 中使用该字符串,但它根本不起作用。
DocumentReference documentReference = db.collection("Rezepte").document(this.randomrezeptname);
我总是遇到同样的错误:
无效的文档参考。文档引用必须有偶数个段,但 Rezepte 有 1 个
我尝试使用 String 的内容并将其直接放在 DocumentReference 中并且它有效。但我必须使用一个变量,因为它应该显示一个随机文档。 任何想法我做错了什么?
【问题讨论】:
-
你的随机字符串中有特殊字符吗?
-
@s_o_m_m_y_e_e 不,它没有。纯文本
-
基本上,错误是因为在 Firestore 中数据是分层的。您只能在一个集合(而不是任何集合)中拥有一个文档,并且只能在一个文档(而不是任何其他文档)中拥有一个集合。所以按照这个顺序,你的文档应该总是在层次结构中的偶数。
-
@s_o_m_m_y_e_e 是的,但我只有一个包含数据文档的集合。就这样。所以不知道哪里可能有层次问题……
标签: java android firebase android-studio google-cloud-firestore