FireStore REST API: как добавить вложенную коллекцию в документ с помощью команд REST? - PullRequest
0 голосов
/ 24 января 2020

Использование REST API FireStore, задокументированное по адресу: https://firebase.google.com/docs/firestore/reference/rest

Я пытаюсь создать новый документ в " users ", у которого есть подколлекция с именем " subcol1"с пустым do c в нем с именем" subdoc1"

Однако следующая команда REST для создания нового документа не работает:

curl -X POST 
-H "Content-Type: application/json" 
-d "{ 'fields': { 'subcol1': [{'subdoc1': { 'fields': {} } }] } }"
"https://firestore.googleapis.com/v1/projects/XXXX/databases/(default)/documents/users"

Как добавить вложенную коллекцию в новый документ (или существующий?) С помощью API-интерфейса REST FireStore?

Я специально должен использовать REST для этой реализации.

Это ответ об ошибке, который я получаю:

{   "error": {
    "code": 400,
    "message": "Invalid value at 'document.fields[0].value' (Map), Cannot have repeated items ('subcol1') within a map.\nInvalid JSON payload received. Unknown name \"\" at 'document.fields[0].value': Proto fields must have a name.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "document.fields[0].value",
            "description": "Invalid value at 'document.fields[0].value' (Map), Cannot have repeated items ('subcol1') within a map."
          },
          {
            "field": "document.fields[0].value",
            "description": "Invalid JSON payload received. Unknown name \"\" at 'document.fields[0].value': Proto fields must have a name."
          }
        ]
      }
    ]   } }

Спасибо!

1 Ответ

1 голос
/ 24 января 2020

После еще нескольких попыток я нашел решение.

Следующие работы:

  1. Сначала создайте новый документ (без вложенной коллекции).
  2. Затем создайте вложенный документ, используя URL-адрес «еще не созданного» подколлекции.

Итак, сначала создайте новый «верхнего уровня», выполните c:

curl -X POST 
-H "Content-Type: application/json" 
-d "{ 'fields': { } }"
"https://firestore.googleapis.com/v1/projects/XXXX/databases/(default)/documents/users"

Затем создайте поддомен c (который «создает» подколлекцию):

curl -X POST 
-H "Content-Type: application/json" 
-d "{ 'fields': { } }"
"https://firestore.googleapis.com/v1/projects/XXXX/databases/(default)/documents/
users/<USER-KEY-FROM-PREVIOUS-JSON-RESPONSE>/subcol1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...