-1

我运行了一个名为 Postgrest 的网络服务器,它在 postgres 数据库之上生成一个 REST API。我在 Google Cloud 中运行它,并且大部分时间都在运行。我需要执行的 HTTP 操作是 POST、GET、DELETE 和 PATCH。

除了 PATCH 之外,一切都正常工作,我用它来更新数据库中的现有值。当我从 curl 命令提示符运行命令时,没有给出错误,但它不起作用。

https://postgrest-q5mmtshbma-uc.a.run.app/notes?noteid=eq.3 -X PATCH -H "授权:Bearer $TOKEN" -H "内容类型:application/json" -d ' {"note" : "更新了!"}'

当我针对本地运行的同一个 postgrest 版本运行它时,一切正常,所以我认为 Google Cloud 运行可能存在问题并且不允许/接受 PATCH 请求?同样,POST、DELETE、GET 一切正常。

任何人都知道这里可能会发生什么?

4

1 回答 1

2

我最终发现这个问题与在 PostGres DB 中使用 RLS(行级安全)有关,并且我已经为插入、更新、删除和选择设置了特定的策略。

我认为“更新”策略设置不正确,因此更新失败,但 postgre DB 和 postgrest WebServer 都没有为此提供错误。

最终,当我在此表上重新创建更新策略时,PATCH(更新)命令运行成功。

于 2019-10-23T01:11:28.810 回答