2016-10-31 2 views
0

Мне нужно присоединиться к моим двум таблицам с Firebase. Прямо сейчас, я получил структуру данных, как показано ниже.Комплексный запрос от Firebase

Когда журнал создается пользователем, он получает уникальный идентификатор от Firebase. Этот идентификатор сохраняется под пользователем, который его создал ([email protected]).

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

logs 
    -KVMbJKN1i2vAxzutiYq 
    duration: 14 
    startDate: 28/10/2016 

    -KVMbLL4i_9dwaRZ9REB 
    duration: 28 
    startDate: 01/09/2016 

    -KVMiLwoSY34TZpf8mST 
    duration: 14 
    startDate: 2/2/2016 

users 
    Edl7nDpJWIdNmDVUDn87p31d9mN2 
    email: [email protected] 
    firstName: test 
    imageUrl: URL 
    lastName: test 
    provider: Facebook 

    KX6DRd0k5fasEaqB8vJWiXkp69L2 
    email: [email protected] 
    firstName: test1 
    imageUrl: URL 
    lastName: test1 
    provider: Firebase 

    WRgxyjSpQlUPmeJwfF9I7PhpvHs1 
    email: [email protected] 
    firstName: test2 
    imageUrl: URL 
    lastName: test2 
    logs 
     -KVMbJKN1i2vAxzutiYq: true 
     -KVMbLL4i_9dwaRZ9REB: true 
     -KVMiLwoSY34TZpf8mST: true 
    provider: Firebase 
+0

Будьте более ясны о том, что вы хотите. – Dravidian

+0

Если я вошел в систему как [email protected], то я хочу, чтобы были показаны три журнала. @Dravidian – Grumme

ответ

1

Чтобы получить продолжительностьSTARTDATE, просто запросить его в нужное место конкретного узла: -

FIRDatabase.database().reference().child("user/\(FIRAuth.auth()!.currentUser!.uid)/logs").observeSingleEvent(of: .value, with: {(userSnap) in 

if let SnapDict = userSnap.value as? [String:AnyObject]{ 

for each in SnapDict{ 

    FIRDatabase.database().reference().child("logs/\(each.key)").observeSingleEvent(of: .value , with : {(Snap) in 

    print(Snap.value) 

    }) 
    } 
    } 
}) 
+0

Я обновил свой ответ – Dravidian

+0

Спасибо! Он отлично работает – Grumme

+0

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

0

Просто добавьте ребенка к каждому журнала узла, который идентифицирует, какой пользователь владеет Это. Таким образом, каждый из них будет иметь продолжительность, startDate и uid.

logs 
    -KVMbJKN1i2vAxzutiYq 
    duration: 14 
    startDate: 28/10/2016 
    uid: WRgxyjSpQlUPmeJwfF9I7PhpvHs1 

Таким образом, узловые журнала указывает на пользователя, которому принадлежит это и пользователей/журналы узел идентифицирует журналы для этого пользователя.

Оттуда, только запрос для журналов, где uid = зарегистрированный в uid будет возвращать узлы журнала и дочерние данные, которые вам нужны в моментальном снимке.