Как должен быть структурирован запрос на запись для Firestore REST API (v1beta1)? - PullRequest
1 голос
/ 02 марта 2020

На основании документа Google Discovery и RP C ссылка представляется, что ресурс : запись должен быть доступен для взаимодействия с базой данных Firestore, но выполнение такого запроса к моему (POST https://firestore.googleapis.com/v1beta1/projects/[my project]/databases/(default)/documents:write) приводит к:

[
  {
    "error": {
      "code": 400,
      "message": "Invalid value (Object), ",
      "status": "INVALID_ARGUMENT",
      "details": [
        {
          "@type": "type.googleapis.com/google.rpc.BadRequest",
          "fieldViolations": [
            {
              "description": "Invalid value (Object), "
            }
          ]
        }
      ]
    }
  }
]

Возможно ли это? Ответ , связанный с , ссылается на то, что он доступен как средство преобразования поля, по той же причине, по которой я этого требую, но я не могу создать действительное тело JSON для успешного выполнения запроса. В настоящее время варианты следующего не работают должным образом при попытке минимального успешного ответа:

{
    "writes": [
        {
            "update": {
                "name": "projects/{projectId}/databases/[my project]/documents/exampleId",
                "fields": {
                    "example": {
                        "integerValue": 100
                    },
                    "timestamp": {
                        "nullValue": null
                    }
                },
                "transform": {
                    "document": "projects/[my project]]/databases/(default)/documents/examples/exampleId",
                    "fieldTransforms": [
                        {
                            "fieldPath": "timestamp",
                            "setToServerValue": "REQUEST_TIME"
                        }
                    ]
                }
            }
        }
    ]
}

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

Прежде всего, обратите внимание, что вы должны использовать v1 версию API REST, а не бета-версии.

Для создания документа вы должны использовать createDocument метод, в то время как для обновления документа вы бы использовали patch один.


Для создания документа вы должны сделать HTTP-запрос POST к следующему URL

https://firestore.googleapis.com/v1/projects/<your-project-id>/databases/(default)/documents/<the-desired-collection>

со следующим телом запроса:

{
  fields: {
    example: {
      integerValue: 100
    }
  }
}
1 голос
/ 02 марта 2020

Вам нужно использовать документы: коммит вместо документов: напишите

также поле имени должно быть в следующем формате:

"name": "projects/projectID/databases/(default)/documents/collectionName/DocumentId"

См. это сообщение .

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