Firestore:无效的文档参考。文档引用必须具有偶数个段,

时间:2020-07-20 16:19:01

标签: firebase flutter google-cloud-firestore

我有一个更简单的应用程序,想在一个单独的集合“ 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)

1 个答案:

答案 0 :(得分:1)

错误消息:

无效的文档参考。文档引用必须具有偶数个段,但是userFavorites / FRbYxmNpSBcda6XOrQUjukvFvVb2 / q7eLxtZfhG3g6Pd1bYY4的数量为3

告诉您已建立文档的路径:

userFavorites / FRbYxmNpSBcc6xOrQUjukvFvVb2 / q7eLxtZfhG3g6Pd1bYY4

它根本不像文档,因为它具有三个路径段:

  1. 用户收藏
  2. FRbYxmNpSBcda6XOrQUjukvFvVb2
  3. q7eLxtZfhG3g6Pd1bYY4

这是构建路径的代码行:

Firestore.instance.collection("userFavorites/$userId").document(id)

由于我们看不到您的数据,因此很难在这里说出您的实际意图。但是无论如何,Firestore都将“ userFavorites”作为顶级集合的名称,“ FRbYxmNpSBcda6XOrQUjukvFvvb2”是该集合中文档的名称,而“ q7eLxtZfhG3g6Pd1bYY4”被视为该文档下的子集合。如果您还有其他意思,则必须弄清楚如何构建该文档的路径以进行查询。