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



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

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

  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);
  });

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

有什么想法吗?

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

   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<…>

与设备的连接丢失。

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

这是正确的 Syntex

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

    Firestore.instance.collection('path').document("documentPath").collection('subCollectionPath').setData({});

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

如果要在 Firestore 事务中创建子集合,以下是解决方案:

Firestore.instance.runTransaction((Transaction tx) {
    tx.set(Firestore.instance.collection('path').document('documentPath')
        .collection('subCollectionPath').document(), {'TestData', 'Data'});
})

注意:不能创建空子集合,必须创建至少包含一个文档的子集合。如果尝试创建数据字段为空的子集合,Firestore 将创建一个空文档。

若要获取子集合数据,请使用此查询

var query  = await databaseReference.collection('Staffs').document("horlaz229@gmail.com"). collection('Wallet').getDocuments()

最新更新