尝试使用请求将数据发布到Firestore

时间:2020-06-09 13:52:39

标签: python google-cloud-firestore python-requests

im尝试使用请求将JSON数据发布到firestore中,并且不断返回此错误。

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"{\"data\": \"message\"}\": Cannot bind query parameter. Field '{\"data\": \"message\"}' could not be found in request message.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"{\"data\": \"message\"}\": Cannot bind query parameter. Field '{\"data\": \"message\"}' could not be found in request message."
          }
        ]
      }
    ]
  }
}

我尝试了使用不同类型的JSON编码的不同方法,但仍然返回相同的错误。如果有人可以帮我研究一下,我将不胜感激。下面是我的代码

    def thestream(self, instance):
        app = App.get_running_app()
        s = requests.Session()
        self.data = {u'data': u'message'}
        self.headers = {"authorization": "bearer " + app.idToken}
        r = s.post("https://firestore.googleapis.com/v1/projects/*******************************/databases/(default)/documents/messages/TemitayoAdefemi", params=json.dumps(self.data), headers=self.headers)
        print(r.ok)
        print(r.content.decode())

1 个答案:

答案 0 :(得分:1)

尝试在有效负载中定义一个Document resource

self.data = {u'fields': {u'data': {u"stringValue": u'message'}}}

在您的POST请求中,尝试将有效负载传递到data=self.data而不是param中:

r = s.post("https://firestore.googleapis.com/v1/projects/***/databases/(default)/documents/messages/TemitayoAdefemi", data=self.data, headers=self.headers)