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