J'essaie de créer une sous-collection dans un document et de définir les données sur les documents de la sous-collection créée.
J'ai essayé ceci mais le programme plante à chaque fois que je l'exécute.
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<â¦>
J'ai également cherché en ligne mais je ne trouve aucune documentation à ce sujet.
Des idées?
Lorsque j'essaye le code ci-dessus, l'application plante avec le message suivant
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);
});
Connexion perdue à l'appareil.
4 Réponses :
J'ai découvert le problème. J'utilisais la mauvaise syntaxe. La syntaxe correcte est
Firestore.instance.collection('path').document("documentPath").collection('subCollectionPath').setData({});
La principale différence ici est que les barres obliques ont été supprimées du nom des chemins.
final databaseReference = Firestore.instance;
databaseReference.collection('main collection name').document( unique id).collection('string name').document().setData(); // your answer missing **.document()** before setData
this is the right Syntex
pouvez-vous s'il vous plaît laissez-moi savoir comment puis-je récupérer des données après avoir stocké des données dans la structure ci-dessus. Je vous remercie.
Pour récupérer les données de sous-collection, utilisez cette requête
var query = await databaseReference.collection('Staffs').document("horlaz229@gmail.com"). collection('Wallet').getDocuments()
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 une 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, Firestore créera un document vide.
Essayez -
Firestore.instance .collection ('/ path') .document ("documentPath") .collection ('/ subCollectionPath'). Reference () .document () .setData ({'TestData': "Data" ,}). then ((onValue) {print ('Créé dans une sous-collection');}). catchError ((e) {print ('====== Erreur ========' + e);});Cela n'a pas fonctionné. La même chose s'est produite. L'application a planté.
J'ai modifié la question pour ajouter le message. Voir la question ci-dessus.