Добавление объекта в хранилище облаков с помощью Flutter - PullRequest
0 голосов
/ 04 июля 2018

Я хочу добавить объект в Google Cloud Firestore в моем приложении Flutter следующим образом:

Firestore image

Я уже сделал класс ответа:

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

Как добавить объект Ответить в облако Firestore?

Edit: Просто чтобы уточнить, я хочу создать поле с типом данных Object, в котором есть поля: Ответ объекта изображения

Ответы [ 3 ]

0 голосов
/ 08 июля 2018

Во-первых, я настоятельно рекомендую вам иметь один файл, который определяет все ваши схемы и / или модели, поэтому есть единственная точка отсчета для вашей структуры БД. как некоторый файл с именем 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,
  };

}

и создайте поле, которое вы хотите, чтобы объект типа карты. затем на странице, которую вы собираетесь вставить в базу данных, импортируйте dbSchema.dart и создайте новую модель:

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

это предполагает, что вы определили свой локальный объект _coordinates (или любой другой) до этого, с чем-то вроде:

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

и затем для вставки в Firestore добавьте метод toJson объекта (вы не можете вставить / обновить простую модель Dart):

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

Firestore.instance.runTransaction((Transaction tx) async {
  var _result = await dbReplies.add(_replyObj.toJson());
  ....
0 голосов
/ 11 августа 2018

@ Laksh22 Насколько я понимаю, вы имеете в виду что-то вроде этого:

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

как на скриншоте выше.

0 голосов
/ 04 июля 2018

Вы можете запустить транзакцию Firestore следующим образом:

    Firestore.instance.runTransaction((transaction) async {
          await transaction.set(Firestore.instance.collection("your_collection").document(), {
            'replyName': replyName,
            'replyText': replyText,
            'replyVotes': replyVotes,
          });
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...