I have got a observe function that shows added items to Firebase Realtime Database.
func observerMessages(completion: @escaping (FireBaseResponse, MessageDataModel) -> Void) {
let ref = Database.database().reference().child(FireBaseConstants.Database.messages).queryOrdered(byChild: FireBaseConstants.Database.timestamp).queryEnding(atValue: firstMessageTimestamp)
ref.observe(.childAdded) { (snapshot) in
if let dict = snapshot.value as? [String:Any] {
if let username = dict["username"] as? String,
let timestamp = dict["timestamp"] as? Int,
let text = dict["text"] as? String,
let senderId = dict["senderId"] as? String {
let message = MessageData(username: username, timestamp: timestamp, text: text, senderId: senderId, messageId: snapshot.key)
print("observeMessages")
completion(.success, message)
}
}
}
}
Problem is that this function triggers for all items that already in database. So it retrieves all data in this child. And I want it retrieve data, that added only after this function called.