Значение обновления Firestore в map of maps

#typescript #firebase #google-cloud-firestore

#typescript #firebase #google-облако-firestore

Вопрос:

Я пытаюсь добавлять значения в карту карт, используя облачные функции и firestore. Карты могут не существовать, и не может быть записи с personID ключом.

Прямо сейчас я выполняю это с помощью следующего кода:

 if (!userData!.requests){
    userData["requests"] = {};
}
if (!userData!.requests.outgoing){
    userData!.requests["outgoing"] = {};
}

userData!.requests.outgoing[`${personID}`] = data;
t.update(usersRef, userData!);
 

Есть ли более простой способ сделать это? И есть ли способ без необходимости сначала считывать данные?

Ответ №1:

Если у вас есть только карты, вы должны иметь возможность использовать точечную нотацию для записи / обновления вложенного поля:

 usersRef.update({
    ["requests.outgoing." personID]: data
})
 

Однако, если у вас есть массив в любом месте пути к данным, это не сработает. Вы можете добавлять / удалять элементы в массиве только без их чтения, обновление любого существующего элемента массива требует цикла чтения-обновления-записи.

Комментарии:

1. Мне пришлось добавить квадратные скобки, чтобы заставить его работать : ["requests.outgoing." personID]: data .

2. Упс…. хороший улов. Я уже думал, что код выглядит странно, когда я его опубликовал, но не мог сразу увидеть. Спасибо, что заметили ошибку и сообщили мне!