使用简单的https请求更新Firestore数据库(云)上的单个字段

时间:2019-01-01 09:28:32

标签: api web google-cloud-firestore

我当前正在使用Swift(macOS),这没关系。

我可以通过Firestore的简单get请求获取数据库数据

https://firestore.googleapis.com/v1beta1/projects/MY_PROJECT_NAME/databases/(default)/documents/" + "User_email" + "?pageSize=100&pageToken=" + "NextPage_Id"

现在我想更新数据库中的一个文件,但我不知道如何。

Firebase api指南对我来说太复杂了,我不理解。

我发现此获取请求网址:

https://firestore.googleapis.com/v1beta1/projects/{projectId}/databases/{databaseId}/documents/{document_path}?updateMask.fieldPaths=status&updateMask.fieldPaths=title

但是当我尝试它时,它给了我这个错误:

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


  "status" : "INVALID_ARGUMENT"
  }
}

我在上面这样使用url:

https://firestore.googleapis.com/v1beta1/projects/MY_PROJECT_NAME/databases/(default)/documents/" + User_email + "/MY_COLLECTION_ID/?updateMask.fieldPaths=name&updateMask.fieldPaths=aaaa

我在哪里做错了?

1 个答案:

答案 0 :(得分:0)

从FireBase支持获得帮助后,我终于得到了答案。

请求类型必须为PATCH,而不是POST或GET或其他任何内容。

请求格式必须为“ application / json”

Body参数类型必须是RAW数据,而不是表单数据,例如:

["fields": ["finished": ["booleanValue": true]]] // this is the value you want to update

网址必须是这样的:

https://firestore.googleapis.com/v1beta1/\(VALUE_PATH)/?updateMask.fieldPaths=\(NAME_OF_KEY_YOU_WANT_TO_UPDATE)

例如:

https://firestore.googleapis.com/v1beta1/projects/PROJECT_NAME/databases/(default)/documents/USER_EMAIL/4EJzurX9QWVnC1uG6sRv/?updateMask.fieldPaths=finished

就这样。

关于此请求的很酷的事情是,如果您要更新的字段不存在,它将为您创建一个。