2016-03-06 4 views
0

Если у нас есть набор данных, какКак снимок работает в Firebase

"user":{ 
    "A":"1" 
    "B":"2" 
    "C":"3" 
    ... 
} 

Когда мы вызываем в Swift:

let ref = Firebase(url:"something/user") 
ref.observeEventType(.Value, withBlock: { snapshot in 
    print(snapshot.value) 
}) 

Мы можем увидеть снимок имеет все данные из базы данных. Может ли моментальный снимок динамически вызывать данные из Firebase, чтобы получить значение? Или он извлекал все данные сразу и сохранялся в локальном? В другом слове мы могли бы получить только частичные данные (например, только A, B, и если мы снова назовем это, моментальный снимок возьмет C, D) из Firebase? У нас только нет выбора, кроме как получить данные сглаживания сразу?

+0

Возникает вопрос немного неясен, но если вы спрашиваете, если вы можете прочитать в значения по одному за раз, ответ да. .childAdded читает каждый ребенок по одному и затем запускает в любое время, когда будет добавлен новый ребенок. Также, если вы знаете конкретный путь к данным, вы можете прочитать в этом одном узле. Например; список пользователей и ключей - это их имя, а их значения - их фамилия (это идея * плохой), но с ее использованием для ясности) и хотел знать, что такое значение пользователя пользователя bob. Ссылка ref ref = Firebase (url: "user/bob"). Ваш снимок будет содержать ключ bob и значение их фамилии. – Jay

+0

@Jay, я извиняюсь, что вам непонятно. Однако я имею в виду не чтение данных, когда набор данных получает изменения или появляются новые данные. Я прошу, предположим, у нас есть один крупномасштабный набор данных. Можем ли мы прочитать его частично, чтобы сэкономить трафик сети? –

ответ

2

Когда вы звоните:

ref.observeEventType(.Value 

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

В базе данных Firebase вы можете получить только полные узлы. Невозможно получить частичный узел.

+0

Спасибо, это то, что я прошу. Но возникает еще один вопрос. Предположим, что у нас есть шкала набора узлов на уровне 10 МБ, требуется время (вероятно, 10 секунд), когда интерфейс пытается получить данные из Firebase и заставит пользователя перестать ждать загрузки данных. Есть ли способ избежать этого? Или мне нужно сначала управлять листами таблиц разделов? –

+0

Если ваша структура данных приводит к проблемам (например, к неприятному пользовательскому опыту), тогда вам, вероятно, следует использовать другую структуру данных. –

0

Вы можете сначала отсортировать данные, используя такие методы, как queryOrderedByKey, queryOrderedByValue или queryOrderedByChild. Затем запишите количество результатов с помощью таких методов, как queryLimitedToFirst, queryLimitedToLast, queryStartingAtValue, queryEndingAtValue или queryEqualToValue.

Более подробную информацию, пожалуйста, прочитайте документацию Firebase по адресу: https://firebase.google.com/docs/database/ios/lists-of-data

Смежные вопросы