Как создать документ в коллекции в FireStore с помощью Flutter - PullRequest
0 голосов
/ 19 мая 2018

Коллекция имеет разрешения по умолчанию на консоли Firebase.

Я правильно вхожу в свой аккаунт с помощью электронной почты и пароля.

user = await _auth.signInWithEmailAndPassword( email: "email@gmail.com", password: "password");

Затем после успешной загрузки изображения в FireStorageЯ также пытаюсь выполнить транзакцию для обновления документа.

  var fileName = _textController.text.toLowerCase();
  StorageUploadTask putFile =
      storage.ref().child("region/$fileName").putFile(_regionImage);

  UploadTaskSnapshot uploadSnapshot = await putFile.future;

  var regionData = new Map();
  regionData["label"] = _textController.text;
  var pictureData = new Map();
  pictureData["url"] = uploadSnapshot.downloadUrl.toString();

  pictureData["storage"] = "gs://app-db.appspot.com/region/$fileName";
  regionData["picture"] = pictureData;

  DocumentReference currentRegion =
      Firestore.instance.collection("region").document(fileName);

  Firestore.instance.runTransaction((transaction) async {
    DocumentSnapshot freshSnap = await transaction.get(currentRegion);
    print(freshSnap.exists);
    //await transaction.set(freshSnap.reference, regionData);
    await transaction.set(currentRegion, regionData);
    print("instance created");
  });

Я получаю эту ошибку при попытке выполнить транзакцию.

То же самое, если я пытаюсь установить на freshSnap.reference или непосредственно на currentRegion.https://gist.github.com/matejthetree/f2a57c929d01919bd46da8ca6d5b6fb1

Обратите внимание, что в строке 15 возникает ошибка для транзакции, но до того, как я не получаю ошибку авторизации, а также для FireStorage, хотя я успешно выгружаю и загружаю изображения в хранилище.

Как следуетподход к созданию документа в FireStore

1 Ответ

0 голосов
/ 19 мая 2018

Похоже, проблема была в том, как я создал карту.

  Map<String, dynamic> regionData = new Map<String, dynamic>();
  regionData["label"] = _textController.text;
  Map<String, dynamic> pictureData = new Map<String, dynamic>();
  pictureData["url"] = uploadSnapshot.downloadUrl.toString();

  pictureData["storage"] = "gs://app-db.appspot.com/region/$fileName";
  regionData["picture"] = pictureData;

  DocumentReference currentRegion =
      Firestore.instance.collection("region").document(fileName);

  Firestore.instance.runTransaction((transaction) async {
    await transaction.set(currentRegion, regionData);
    print("instance created");
  });

этот код теперь работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...