【发布时间】:2019-11-29 23:01:28
【问题描述】:
我需要更新事务中的某些 Firestore 文档。
firestore.projects.databases.documents.beginTransaction 在创建 readWrite 事务时失败,但对于 readOnly 事务成功。
我已确保数据库处于测试模式,所有读写都打开
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
(失败)
https://firestore.googleapis.com/v1beta1/projects/foo-bar-12345/databases/(default)/documents
{
"options": {
"readWrite": {}
}
}
错误响应:
{
"error": {
"code": 403,
"message": "Missing or insufficient permissions.",
"status": "PERMISSION_DENIED"
}
}
(成功)- 将选项更改为只读,返回一个事务
https://firestore.googleapis.com/v1beta1/projects/foo-bar-12345/databases/(default)/documents
{
"options": {
"readOnly": {}
}
}
成功响应:
{
"transaction": "EcMecxy5IXKoIlkAIx+ixOCJ/NT6gvpbaEwWk/5YkOxVxSeMWpOdG4H2nZGK3Y0Pmcj+lbvk6sAlw68UpFgjd8puTpyS2Vwm2X6mw2SKKKKK9OakXxkGgi+8o4vx70Qd4YQaGg=="
}
【问题讨论】:
-
您如何验证您的请求,Firebase Auth 或 Google OAuth?只有在您使用 Firebase 身份验证时,安全规则才会影响您的请求,cloud.google.com/firestore/docs/…。
-
谢谢胡安。数据库处于测试模式,完全开放读写,所以我根本没有进行身份验证。我可以成功地创建、阅读、更新或删除文档。我似乎唯一不能做的就是创建一个读写事务