Как обновить существующие поля документа в Firestore с помощью REST API - PullRequest
0 голосов
/ 06 августа 2020

У меня есть проект с Cloud Firestore в качестве базы данных. Теперь я хочу обновить данные в одном документе с помощью метода выборки. Структура My Cloud Firestore следующая:

Logging (Collection)
   [userID] (Document)
       Notifications (Collection)
          [notificationID] (Document)
              active: "true"
              type: "T1"

И я использую приведенный ниже вызов fetch:

fetch("https://firestore.googleapis.com/v1/projects/[ID]/databases/(default)/documents/Logging/[userID]
       +"/Notifications/[notificationID]?updateMask.fieldPaths=active", {
          method: 'PATCH', 
          body: JSON.stringify({
            "active": "false"
          }),
          headers: {
            Authorization: 'Bearer ' + idToken,
            'Content-Type': 'application/json'
          }
        }).then( function(response){
          console.log(response);
          response.json().then(function(data){
            console.log(data);
          });
        }).catch(error => {
          console.log(error);
        });

Выполнение метода выборки У меня возникает ошибка с сообщением

«Получена недействительная полезная нагрузка JSON. Неизвестное имя« активно »в 'документе': поле не найдено.«

Как я могу обновить существующие поля документа Firestore с REST API? Может кто-нибудь мне помочь? Я перепробовал много разных URL-адресов и методов, но у меня ничего не работает.

1 Ответ

2 голосов
/ 06 августа 2020

Как объяснено в Firestore REST API do c, вам необходимо передать объект типа Document в теле, как показано ниже:

    {
      method: 'PATCH',
      body: JSON.stringify({
        fields: {
          active: {
            stringValue: 'false',
          },
        },
      }),
    }

Я сделал предположение, что ваше поле active имеет тип String (поскольку вы используете "active": "false"). Если он имеет тип Boolean, вам нужно вместо этого использовать свойство booleanValue, как показано ниже. Подробнее см. do c.

    {
      method: 'PATCH',
      body: JSON.stringify({
        fields: {
          active: {
            booleanValue: false,
          },
        },
      }),
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...