web-dev-qa-db-fra.com

Ajout d'un objet à Cloud Firestore à l'aide de Flutter

Je veux ajouter un objet à Google Cloud Firestore dans mon application Flutter comme ceci:

Firestore image

J'ai déjà créé un cours de réponse:

class Reply {
Reply(this.replyName, this.replyText, this.replyVotes);
  final String replyName;
  final String replyText;
  final String replyVotes;

  String getName() {
    return replyName;
  }

  String getText() {
    return replyText;
  }

  String getVotes() {
    return replyVotes;
  }
}

Comment ajouter un objet Reply au cloud Firestore?

Edit: Juste pour clarifier, je veux créer un champ avec le type de données Object qui contient des champs: Répondre à l'image de l'objet

7
Laksh22

tout d'abord, je vous recommande fortement d'avoir un seul fichier qui définit tous vos schémas et/ou modèles, donc il n'y a qu'un seul point de référence pour votre structure db. comme un fichier nommé dbSchema.Dart:

import 'package:meta/meta.Dart';

class Replies {

  final String title;  
  final Map coordinates;

  Replies({
    @required this.title,
    @required this.coordinates,
  });

 Map<String, dynamic> toJson() =>
  {
    'title': title,
    'coordinates': coordinates,
  };

}

et définissez le champ que vous souhaitez être un type d'objet Carte. puis, sur la page que vous allez insérer dans la base de données, importez dbSchema.Dart et créez un nouveau modèle:

Replies _replyObj = new Replies(
  title: _topic,
  coordinates: _coordinates,
);

cela suppose que vous avez défini votre objet _coordinates local (ou autre) avant cela, avec quelque chose comme:

_coordinates = {
 'lat': '40.0000',
 'lng': '110.000', 
};

puis pour insérer dans Firestore, ajoutez la méthode toJson de l'objet (vous ne pouvez pas insérer/mettre à jour un modèle Dart standard):

CollectionReference dbReplies = Firestore.instance.collection('replies');

Firestore.instance.runTransaction((Transaction tx) async {
  var _result = await dbReplies.add(_replyObj.toJson());
  ....
11
blaneyneil

Vous pouvez exécuter une transaction Firestore comme ceci:

    Firestore.instance.runTransaction((transaction) async {
          await transaction.set(Firestore.instance.collection("your_collection").document(), {
            'replyName': replyName,
            'replyText': replyText,
            'replyVotes': replyVotes,
          });
        });
3
diegoveloper

@ Laksh22 Pour autant que je comprends, vous voulez dire quelque chose comme ceci:

Firestore.instance.runTransaction((transaction) async {
    await transaction.set(Firestore.instance.collection("your_collection").document(), {
        'reply' : {
        'replyName': replyName,
        'replyText': replyText,
        'replyVotes': replyVotes,
    }
});

tout comme la capture d'écran ci-dessus.

1