#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. Упс…. хороший улов. Я уже думал, что код выглядит странно, когда я его опубликовал, но не мог сразу увидеть. Спасибо, что заметили ошибку и сообщили мне!