Как обновить avatar / photoUrl в нескольких местах в Firestore? - PullRequest
0 голосов
/ 01 мая 2019

В Firestore я пытаюсь обновить аватар (photoUrl) в нескольких местах, когда пользователь меняет аватар.

Структура данных: https://i.imgur.com/yOAgXwV.png

Облачная функция:

exports.updateAvatars = functions.firestore.document('users/{userID}').onUpdate((change, context) => {
    const userID = context.params.userID;
    const imageURL = change.after.data().avatar;

    console.log(userID);
    console.log(imageURL);
});

С помощью этой облачной функции я наблюдаю за изменениями в пользовательских обновлениях. Когда пользователь меняет аватар, я получаю ID пользователя и URL фотографии. Теперь я хочу обновить все «задачи», где UID участника равен userID.

1 Ответ

0 голосов
/ 02 мая 2019

Вы можете использовать оператор array_contains для вашего запроса.Это позволяет вам искать значения массивов внутри ваших документов.

https://firebase.google.com/docs/firestore/query-data/queries#array_membership

Если вы нашли свои документы, вам необходимо обновить URL-адрес во всех документах и ​​записать обновленные документы обратно в базу данных..

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

Более простое решение:

Я подозреваю, что в списке дел не может быть более 10 пользователей, если, таким образом, очень сложно сохранить некоторые прочитанные документы.

Я бы порекомендовал вам просто загрузить все пользовательские документы, которые вынеобходимо отобразить аватар в списке дел.

...