представьте себе такой сценарий:
У вас есть список, скажем, 100 элементов, пользователь выбирает из списка 12 элементов.
Теперь пользователь хочет, чтобы эти 12 элементов отображались в новом списке с актуальными данными (если данные изменяются из исходного списка / узла)
Каков наилучший способ сделать это без необходимости денормализовать все данные для каждого элемента?
есть ли способ заказатьByChild (). EqualTo ( несколько элементов )
( несколько предметов являются привилегированными предметами)
В настоящее время я успешно отображаю избранное в новом списке, но я отправляю все данные на узел пользователей с избранным, проблема в том, что когда я изменяю данные, их данные из избранного не меняются.
примечание - эти изменения вносятся вручную в БД и не могут быть изменены пользователем (метаданные, которые могут измениться)
UPDATE
Я пытаюсь достичь этого сейчас с помощью облачных функций. Я пытаюсь обновить предмет, но не могу заставить его работать.
Вот мой код:
exports.itemUpdate = functions.database
.ref('/items/{itemId}')
.onUpdate((change, context) => {
const before = change.before.val(); // DataSnapshot after the change
const after = change.after.val(); // DataSnapshot after the change
console.log(after);
if (before.effects === after.effects) {
console.log('effects didnt change')
return null;
}
const ref = admin.database().ref('users')
.orderByChild('likedItems')
.equalTo(before.title);
return ref.update(after);
});
Я не уверен, что я делаю здесь неправильно.
Ура!