gpt4 book ai didi

firebase - 无法确定 Firestore REST API 调用的正确顺序以使用事务更新文档

转载 作者:行者123 更新时间:2023-12-02 19:17:34 25 4
gpt4 key购买 nike

我无法找出更新事务内文档的正确调用顺序。我正在使用 firebase v1beta1 REST API。我使用以下顺序:

  1. 调用“beginTransaction”,创建读写事务
  2. 对感兴趣的文档调用“get”,从 1 开始传递交易
  3. 调用“提交”,在提交中写入文档更新

开始读写事务时失败。我收到“权限缺失或不足”的消息。错误。请注意,数据库处于测试模式(所有读取和写入均打开,仅用于此测试),因此我不认为这是权限错误。

  • 我浏览了 Firebase 文档,其中有除 REST 客户端之外的所有其他客户端的事务示例。所以我刚刚通过阅读 REST API 引用文档得出了上面的序列

  • 我已检查数据库是否处于测试模式,所有读取和写入均处于打开状态。这是。我可以使用 createDocument、删除和更新 REST API 在数据库中创建、更新或删除集合

  • 我使用了 google api explorer 来确保我拥有正确的请求结构 https://developers.google.com 。 - 然后搜索要使用的APIfirestore.projects.databases.documents.{您想要的api}

  • 我尝试调用 beginTransaction 成功创建只读事务,效果很好。

(数据库的安全规则)

service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
  • 我尝试调用 beginTransaction 来成功创建只读事务,效果很好。

(这会返回一笔交易)

POST https://firestore.googleapis.com/v1beta1/projects/foo-bR-12345/databases/(default)/documents:beginTransaction
{
"options": {
"readOnly": {
}
}
}

(这不是)

POST https://firestore.googleapis.com/v1beta1/projects/foo-bar-12345/databases/(default)/documents:beginTransaction
{
"options": {
"readWrite": {
}
}
}

这是我在开始读写事务时遇到的错误。我知道这看起来像是一个安全规则问题,但如果您知道网址,则数据库是完全开放的。

{
"error": {
"code": 403,
"message": "Missing or insufficient permissions.",
"status": "PERMISSION_DENIED"
}
}

我尝试的另一件事是查看调用顺序是否正确

1) 开始一个只读事务(有效)

2) 在文档上调用 get,将事务传递到 (works)

3) 调用commit,更新文档。此调用失败 - 出现错误

{
"error": {
"code": 400,
"message": "Cannot modify entities in a read-only transaction.",
"status": "INVALID_ARGUMENT"
}
}

这就是我所期望的,因为它是一个只读事务

最佳答案

(感谢 Juan Lara)正确的顺序是 1.beginTransaction(确保我已通过身份验证)
2. getDocument(从1传入readWrite事务) 3.提交(传入事务并包括任何更新)

提交,也可以在没有 txn 的情况下使用,以执行一系列自动更新

关于firebase - 无法确定 Firestore REST API 调用的正确顺序以使用事务更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57111694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com