Как получить метку времени (расположенную в Firebase Double или String) через снимок как int для использования в операторе if? - PullRequest
0 голосов
/ 15 октября 2019

Вопрос кажется легким, немного сложнее. Вот соответствующая структура базы данных:

"people" : {
    "q3up6CyAe5PoEAooJwCclOGGcZd2" : {
      "peopleWhoLike2" : {
        "NMNQYJ5z64fATK2MMs7m0ggHl0k2" : 1571089433551

Нас интересует метка времени 1571089433551. Первый идентификатор пользователя (q3up6CyAe5PoEAooJwCclOGGcZd2) - это пользователь, который понравился текущему пользователю. Текущий пользователь - NMNQYJ5z64fATK2MMs7m0ggHl0k2

Мы хотим написать оператор if, если текущее время минус 1571089433551 превышает 8000 секунд. Эту часть я могу сделать. Вопрос не в этом. Именно для того, чтобы получить 1571089433551 как int через моментальный снимок

Вот как была сделана временная метка:

      ref.child("people").child(self.postID).observeSingleEvent(of: .value, with:  {(snapshot) in
            if let people1 = snapshot.value as? [String: AnyObject] {

                let current = Auth.auth().currentUser!.uid
                let p3 = ServerValue.timestamp()as! [String : Any]
                let updateLikes: [String: Any] = [current: p3]

                ref.child("people").child(self.postID).child("peopleWhoLike2").updateChildValues(updateLikes, withCompletionBlock: { (error, reff) in .....

Здесь я пытался использовать ее для оператора IF

          let thisUsersUid = Auth.auth().currentUser?.uid //Mr. Dunn's uid

          refArtists = Database.database().reference().child("people").child(self.postID).child("peopleWhoLike2")

          refArtists.observe(DataEventType.value,  with: {snapshot in

    ---------


let secondsInDay = 86400

if (Int(-date.timeIntervalSinceNow) < secondsInDay){

Это ------ часть между вышеупомянутым - это то, что мне нужно выяснить. Как прочитать снимок с firebase и получить 1571089433551 в виде целого числа.

1 Ответ

0 голосов
/ 15 октября 2019

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

Начните со структуры, аналогичной вашей

people
   uid_0 //the user whom the current user liked,
      peopleWholike2
         uid_1: 123456 //the current user with a timestamp

Вот один из способовперейдите непосредственно к отметке времени: 123456. Я добавил несколько дополнительных переменных, чтобы вы могли видеть пути и точки self.ref к моей базе Firebase. первый узел при использовании с .observeSingleEvent. В вашем вопросе вы ищете эту конкретную временную метку, так что это сделает это.

Редактировать :

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

people
   uid_0
      peopleWholike2
         uid_1: 123
         uid_2: 456
         uid_3: 789

Предположим, что пользователь с uid_3 входит в систему и хочет прочитать свою метку времени из узла uid_0. Вот код

func readChildTimestamp() {
    let myUid = "uid_3" //this is the currently logged in user
    let peopleRef = self.ref.child("people")
    let thisPersonRef = peopleRef.child("uid_0")
    let peopleThatLikeThisPersonRef = thisPersonRef.child("peopleWhoLike2")
    let myRef = peopleThatLikeThisPersonRef.child(myUid)
    myRef.observeSingleEvent(of: .value, with: { snapshot in
        let personUidKey = snapshot.key
        let timestamp = snapshot.value as? Int ?? 0
        print(personUidKey, timestamp)
    })
}

и выход

uid_3 789
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...