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.
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.
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()