0

我想弄清楚为什么我会收到这个错误

VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: 'package:cloud_firestore/src/collection_reference.dart': Failed assertion: line 60 pos 14: '!path.contains('//')': a document path must not contain "//"
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2      CollectionReference.doc
package:cloud_firestore/src/collection_reference.dart:60
#3      _VideopageofcurrentuserState.likevideo (package:wichtigdenyady/taking%20videos/currentuservideos.dart:50:63)
#4      _VideopageofcurrentuserState._buildBody.<anonymous closure>.<anonymous closure> (package:wichtigdenyady/taking%20videos/currentuservideos.dart:417:24)
#5      _InkResponseState._handleTap
package:flutter/…/material/ink_well.dart:991
#6      GestureRecognizer.invokeCallback
package:flutter/…/gestures/recognizer.dart:182
#7      TapGestureRecognizer.handleTapUp
package:flutter/…/gestures/tap.dart:607
#8      BaseTapGestureRecognizer._checkUp
package:flutter/…/gestures/tap.dart:296
#9      BaseTapGestureRecognizer.acceptGesture
package:flutter/…/gestures/tap.dart:267
#10     GestureArenaManager.sweep
package:flutter/…/gestures/arena.dart:157
#11     GestureBinding.handleEvent
package:flutter/…/gestures/binding.dart:385
#12     GestureBinding.dispatchEvent
package:flutter/…/gestures/binding.dart:361
#13     RendererBinding.dispatchEvent
package:flutter/…/rendering/binding.dart:278
#14     GestureBinding._handlePointerEventImmediately
package:flutter/…/gestures/binding.dart:316
#15     GestureBinding.handlePointerEvent
package:flutter/…/gestures/binding.dart:280
#16     GestureBinding._flushPointerEventQueue
package:flutter/…/gestures/binding.dart:238
#17     GestureBinding._handlePointerDataPacket
package:flutter/…/gestures/binding.dart:221
#18     _rootRunUnary (dart:async/zone.dart:1370:13)
#19     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
#20     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
#21     _invoke1 (dart:ui/hooks.dart:180:10)
#22     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:276:7)
#23     _dispatchPointerDataPacket (dart:ui/hooks.dart:96:31)

我要做的是:首先给方法一些数据

buildBody(videos.data()['likes'],videos.data()['videourl'])

然后在执行此操作的方法中

  Widget _buildBody( videoid,video) {
   

    return Container(
      - - - -
Stack(
                children: [
                  Padding(
                    padding: const EdgeInsets.fromLTRB(3, 7, 0, 0),
                    child: Align(
                      alignment: Alignment.topLeft,
                      child: RatingBarIndicator(
                        rating: _userRating,
                        itemBuilder: (context, index) => InkWell(
                          onTap: () {
                            setState(() {
                              _userRating = index + 1.toDouble();
                            });
                            print(index + 1.toDouble());
                            print(video);
                            likevideo(video, _userRating);
                          },
                          child: Icon(
                            Icons.star,
                            color: Colors.amber,
                          ),
 ---

所以在评分栏上点击我调用的方法就像视频一样

 likevideo(String id, double _rating) async {
    String uid = FirebaseAuth.instance.currentUser.uid;
    DocumentSnapshot doc =
        await FirebaseFirestore.instance.collection('videos').doc(id).get();
    if (!doc.data()['likes'].contains(uid)) {
      FirebaseFirestore.instance.collection('videos').doc(id).update({
        'likes': FieldValue.arrayUnion([uid]),
      });

      FirebaseFirestore.instance
          .collection('videos')
          .doc(id)
          .collection("uservotes")
          .doc(uid)
          .set({'videoid': id, 'rating': _rating, 'uid': uid});
    }
  }

这里我将用户 uid 的当前 uid 保存到数组中,并将 id、_rating 和 uid 保存到子集合中。我不知道错误是什么意思,但我认为这意味着路径所以这个值

videos.data()['videourl']

是空的,但打印时不是它给我这个

flutter: https://firebasestorage.googleapis.com/v0/b/wichtigdenyag.appspot.com/o/allvideos%2F269700204266546905SaQFz?alt=med......

那么错误从哪里开始???但这就是我认为也许有人知道什么是真正的错误

4

1 回答 1

1

正如您将在 Firestore 文档中看到那样,文档 ID 不能包含正斜杠 (/)。

因此,如果您将字符串传递https://firebasestorage.googleapis.com/v0/b/...给该doc()方法,则会返回一个错误,例如您得到的错误:a document path must not contain "//".

于 2021-04-28T18:51:46.987 回答