Skip to main content
 首页 » 编程设计

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

2024年06月03日36itcoder

我目前正在使用 Swift (macOS),这并不重要。

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

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" 
  } 
} 

我像这样使用上面的网址:

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

我哪里做错了?

请您参考如下方法:

在获得 FireBase 支持人员的帮助后,我终于得到了答案。

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

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

Body参数类型必须是RAW数据而不是form-data,例如:

["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 

就是这样。

此请求很酷的一点是,如果您要更新的字段不存在,它会为您创建一个。