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.