我有一个更简单的应用程序,想在一个单独的集合“ userFavorites”中添加用户喜欢的项目,这样做可以根据当前用户的uid存储所有喜欢的项目:
Future getCurrentUser() async {
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
final uid = user.uid;
return uid.toString();
}
Future<void> toggleFavoriteStatus() async{
var userId = await getCurrentUser();
final oldStatus = isFavorite;
isFavorite = !isFavorite;
notifyListeners();
try{
await Firestore.instance.collection("userFavorites/$userId").document(id).updateData({
'isFavorite': isFavorite,
});
}catch(error){
_setFavValue(oldStatus);
}
}
但是当我尝试收藏任何项目时,我都会收到此错误:
Invalid document reference. Document references must have an even number of segments, but userFavorites/FRbYxmNpSBcda6XOrQUjukvFvVb2/q7eLxtZfhG3g6Pd1bYY4 has 3
E/MethodChannel#plugins.flutter.io/cloud_firestore(14551): at com.google.firebase.firestore.DocumentReference.forPath(com.google.firebase:firebase-firestore@@21.3.0:80)
答案 0 :(得分:1)
错误消息:
无效的文档参考。文档引用必须具有偶数个段,但是userFavorites / FRbYxmNpSBcda6XOrQUjukvFvVb2 / q7eLxtZfhG3g6Pd1bYY4的数量为3
告诉您已建立文档的路径:
userFavorites / FRbYxmNpSBcc6xOrQUjukvFvVb2 / q7eLxtZfhG3g6Pd1bYY4
它根本不像文档,因为它具有三个路径段:
这是构建路径的代码行:
Firestore.instance.collection("userFavorites/$userId").document(id)
由于我们看不到您的数据,因此很难在这里说出您的实际意图。但是无论如何,Firestore都将“ userFavorites”作为顶级集合的名称,“ FRbYxmNpSBcda6XOrQUjukvFvvb2”是该集合中文档的名称,而“ q7eLxtZfhG3g6Pd1bYY4”被视为该文档下的子集合。如果您还有其他意思,则必须弄清楚如何构建该文档的路径以进行查询。