Обновите одно поле в базе данных Firestore (облачное) простым запросом https - PullRequest
0 голосов
/ 01 января 2019

В настоящее время я использую Swift (macOS), и это не имеет значения.

Я могу получить данные своей базы данных с помощью этого простого запроса на получение из Firestore

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

Теперь я хочуобновить один файл в базе данных, и я не знаю, как.

Руководство по API Firebase слишком сложное для меня, и я его не понимаю.

Я нашел этот запрос на получениеurl:

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 голосов
/ 10 января 2019

Я наконец получил ответ после получения справки от поддержки FireBase.

Тип запроса должен быть PATCH, а не POST или GET или что-либо еще.

Формат запроса должен быть "application /json "

Тип параметров Body должен быть RAW-данными, а не данными формы, например:

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

URL должен быть таким:

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

Вот так.

Классная вещь в этом запросе: если поле, которое вы хотите обновить, не существует, оно создаст его для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...