Возможно ли обновить Firebase CloudFirestore с флаттера без аутентификации пользователя? - PullRequest
0 голосов
/ 18 мая 2018

Я установил эти разрешения в целях отладки на своем пожарном депо.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

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

Это мой код флаттера

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

  UploadTaskSnapshot uploadSnapshot = await putFile.future;

  print("image uploaded");

  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(currentRegion, regionData);
    print("instance created");
  });

Это мой консольный журнал https://gist.github.com/matejthetree/c34d0dcba507acd511773ae9b14a8725

Я следил за новым Google Codelab и загружал и получал изображения из хранилищаработает, также работает сбор данных, созданных мной из консоли Firebase.

Пример поиска рабочей коллекции:

  body: StreamBuilder(
    stream: Firestore.instance.collection("region").snapshots(),
    builder: (context, snapshot) {
      if (!snapshot.hasData) return const Text('Loading...');
      return new ListView.builder(
        itemCount: snapshot.data.documents.length,
        padding: const EdgeInsets.only(top: 10.0),
        itemBuilder: (context, index) {
          DocumentSnapshot ds = snapshot.data.documents[index];
          var imageUrl = ds["picture"]["url"];
          var imageLabel = ds["label"];
          var imageCard = new RegionCard(imageUrl, imageLabel);
          return imageCard;
        },
      );
    },
  ),

Как подходить к созданию новых документов в коллекции?

Как сказал @gunter в комментариях, наличие публичных разрешений на запись было оченьплохо, поэтому я решил попробовать войти.

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