是否可以在不验证用户身份的情况下更新Firebase CloudFirestore?

时间:2018-05-18 06:35:35

标签: firebase google-cloud-firestore flutter

我在我的firestore上为调试目的设置了这些权限。

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在评论中所说,拥有公共写权限非常糟糕,所以我决定尝试登录方法。

0 个答案:

没有答案
相关问题