从 Flutter 应用程序在文档中创建子集合

Uma*_*Uma 6 dart firebase flutter google-cloud-firestore

我正在尝试在文档中创建一个子集合并将数据设置为创建的子集合中的文档。

我试过这个,但每次运行时程序都会崩溃。

  await Firestore.instance
      .collection('/path')
      .document("documentPath")
      .collection('/subCollectionPath')
      .document()
      .setData({
    'TestData': "Data",
  }).then((onValue) {
    print('Created it in sub collection');
  }).catchError((e) {
    print('======Error======== ' + e);
  });
Run Code Online (Sandbox Code Playgroud)

我也在网上查看过,但找不到任何相关文档。

有任何想法吗?

当我尝试上述代码时,应用程序崩溃并显示以下消息

   flutter: EVENT StorageTaskEventType.success
   *** First throw call stack:
   (
    0   CoreFoundation                      0x0000000111eb61bb __exceptionPreprocess + 331
    1   libobjc.A.dylib                     0x0000000111454735 objc_exception_throw + 48
    2   Runner                              0x000000010ce707b1 -[FIRFirestore documentWithPath:] + 257
    3   Runner                              0x000000010d10662c getDocumentReference + 124
    4   Runner                              0x000000010d109879 -[FLTCloudFirestorePlugin handleMethodCall:result:] + 2665
    5   Flutter                             0x000000010e5b99a2 __45-[FlutterMethodChannel setMethodCallHandler:]_block_invoke + 115
    6   Flutter                             0x000000010e5d6616 _ZNK5shell21PlatformMessageRouter21HandlePlatformMessageEN3fml6RefPtrIN5blink15PlatformMessageEEE + 166
    7<…>
Run Code Online (Sandbox Code Playgroud)

与设备的连接丢失。

Gnz*_*iet 12

 final databaseReference = Firestore.instance;
databaseReference.collection('main collection name').document( unique id).collection('string name').document().setData(); // your answer missing **.document()**  before setData
Run Code Online (Sandbox Code Playgroud)

这是正确的语法


Uma*_*Uma 7

想通了问题所在。我使用了错误的语法。正确的语法是

    Firestore.instance.collection('path').document("documentPath").collection('subCollectionPath').setData({});
Run Code Online (Sandbox Code Playgroud)

这里的主要区别是正斜杠已从路径名称中删除。