При работе с Firebase (базой данных реального времени) я хотел бы знать следующее об объектах в базе данных:
Я могу придумать для этого несколько приемов. Например:
on('value')
и скачайте весь (часто огромный) объект.Они выполняют свою работу в определенных обстоятельствах, но являются довольно произвольными и плохо масштабируются.
Есть ли способ достичь вышеизложенного, не загружая весь объект или не создавая кучу «бухгалтерских» записей в базе данных?
Ну, я надеялся, что у кого-то более умного / знакомого с Firebase есть какой-то трюк с использованием запросов или что-то в этом роде. Ну что ж. Если ответ заключается в том, что решения нет, я буду рад принять ваш комментарий в качестве ответа, если вы опубликуете его как таковой.
Обычно данные дублируются и добавляются в базу данных, чтобы удовлетворить ваши ожидаемые запросы, не обращаясь к слишком большому количеству данных. Здесь нет никаких скрытых или секретных операций - то, что вы видите в документации, и есть ваш набор инструментов. Похоже, вы уже делаете правильные вещи.
Если предположить, что веб-SDK (с точки зрения браузера), обновления в реальном времени (.on
) являются правильным способом получения данных этого типа. Данные не должны быть огромными - они называются «базой данных в реальном времени», так как они не предназначены для хранения больших типов файлов, таких как изображения и видео.
Прислушивайтесь к ценностным событиям
var starCountRef = firebase.database().ref('posts/' + postId + '/starCount'); starCountRef.on('value', function(snapshot) { updateStarCount(postElement, snapshot.val()); });
Я ценю ответ, но есть много случаев использования, когда, даже если файл небольшой (например, ~ 20 КБ), вы не хотите перемещать весь файл. Например, представьте общий документ с> 30 пользователями (моя текущая ситуация). В этом сценарии вы не захотите передавать весь документ всем, когда кто-то его немного изменяет.
возможно, вы могли бы прослушивать более конкретный уровень, то есть дочерний узел этого документа?
Да, ты можешь. Один из способов обхода - прослушивание значения небольшого дочернего значения, которое не изменяется и имеет такое же время жизни, что и родительское, но это довольно спонтанно и не работает, если вам нужны общие способы сопоставления объектов вашей базы данных с вашими. клиентские модели.
Обычно данные дублируются и добавляются в базу данных, чтобы удовлетворить ваши ожидаемые запросы, не обращаясь к слишком большому количеству данных. Здесь нет никаких скрытых или секретных операций - то, что вы видите в документации, и есть ваш набор инструментов.