Как эффективно обновлять документы коллекции при изменении определенного значения в Firestore?

У меня 2 коллекции. Один из них называется «ПОЛЬЗОВАТЕЛИ», а другой — «СООТВЕТСТВУЮЩИЕ». ПОЛЬЗОВАТЕЛИ могут участвовать в МАТЧАХ, отображая аватар пользователя, присоединившегося к матчу. Проблема в том, что когда пользователь меняет изображение своего аватара после присоединения к матчу, аватар матча не меняется, потому что у матча старый аватар.

Аватар сохранен как Base64 в Firestore, но в ближайшем будущем я изменю его на «Хранилище».

Я пытался установить ссылку, но это дает мне только путь.

Если мне нужно выполнить вызов API базы данных для каждого совпадения, к которому присоединился пользователь, возможно, мне придется выполнить 20 вызовов API, обновляющих совпадения. Это может быть решением, но не лучшим.

Может быть, решение находится в функциях Google? У меня нет идей.

как насчет сохранения значения аватара в пользовательских коллекциях и обновления его только там... затем при загрузке совпадения вы просто запрашиваете информацию о пользователях этого совпадения, а затем у вас есть актуальные аватары.

andresmijares 21.06.2019 21:23

Ну, допустим, мне придется делать еще больше запросов, потому что в матче может быть до 5 видимых игроков, прежде чем вводить детали. Читая ответ Фрэнка, вижу, что лучшее решение - сменить аватарку во всех матчах сразу.

tzonGoza 25.06.2019 23:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Maybe the solution is in the Google Functions?

Облачные функции также получают доступ к Firestore через SDK, поэтому они не могут волшебным образом делать то, что не позволяет SDK.

Если вы дублируете данные и обновляете один из дубликатов, вам придется подумать об обновлении остальных. Если все они должны быть обновлены, это действительно требует отдельного вызова для каждого дубликата.

Если вы не хотите этого делать, не храните повторяющиеся данные.

Дополнительные сведения о стратегиях обновления повторяющихся данных см. в статье Как записать денормализованные данные в Firebase.

Я ценю твой ответ, Фрэнк. Наконец, я переименую переменные аватара отдельным вызовом.

tzonGoza 25.06.2019 23:27

Другие вопросы по теме