Firebase Javascript / Совместимость карты Typescript - PullRequest
0 голосов
/ 11 февраля 2020

Когда я пытаюсь написать карту для базы данных, я сталкиваюсь с этой ошибкой:

FirebaseError: Function DocumentReference.set() called with invalid data. Unsupported field value: a custom Map object (found in field documentData.elements)

Я хочу писать карты вместо массивов для базы данных Firebase, чтобы иметь возможность объединять наборы данных без перезаписи всего массива, но только добавление или удаление записей карты. Тем не менее, я не могу заставить карту работать, даже если в документации Firebase сказано, что она поддерживает карты.

Мой интерфейс выглядит так:

export interface Element {
   uid:string;
   value:string;
}
export interface DocumentData {
    uid: string;
    elements: Map<string, Element>;
}

Запись этих документов не работает и терпит неудачу с ошибкой выше.

let documentData = {uid:"test_uid", elements: new Map([{"one", "test_string"}],[{"two", "test_string"}]]);
...
...
            .doc(documentData.uid)
            .set({documentData, {merge: true});

У кого-нибудь есть идея, как записать карту в хранилище, пожалуйста? Это на самом деле проблема с картой, или я неправильно установил?

1 Ответ

2 голосов
/ 11 февраля 2020

Firestore принимает только старые старые JavaScript объекты, которые содержат поля и значения для записи в документ. Он не принимает объект карты ES6, что совсем не одно и то же.

Просто создайте объект и передайте его set():

const data = {
    uid: "test_uid",
    elements: {
        one: "test_string",
        two, "test_string"
    }
}

set(data, {merge: true})

Я советую обратиться к документация для большего количества примеров. Объекты карты поддерживаются для Java, но не для JavaScript.

Что произойдет с приведенным выше кодом, так это то, что он обновит два поля, а «elements» будет поле типа карты Firestore.

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