web-dev-qa-db-fra.com

Création de sous-collection dans le document de l'application Flutter

J'essaie de créer une sous-collection dans un document et de définir des données sur des documents dans la sous-collection créée.

J'ai essayé cela, mais le programme se bloque chaque fois que je courais ça.

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

J'ai aussi regardé en ligne mais je ne trouve aucune documentation pour cela.

Des idées?

Lorsque j'essaie le code ci-dessus, l'application se bloque avec le message suivant

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

Connexion perdue à l'appareil.

6
Uma

Voici la solution, si vous souhaitez créer une sous-collection dans une transaction Firestore:

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

Remarque: Vous ne pouvez pas créer de sous-collection vide, vous devez créer la sous-collection avec au moins un document. Si vous essayez de créer la sous-collection avec le champ de données vide, Fireestore créera un document vide.

2
brianbhsu

Pour récupérer des données de sous-collection, utilisez cette requête

var query  = await databaseReference.collection('Staffs').document("[email protected]"). collection('Wallet').getDocuments()
1
SilenceDev