2016-04-24 75 views
1

在我的应用我送这个查询:如何更新Firebase查询?

let defaults = NSUserDefaults.standardUserDefaults() 
var time: String? 

if defaults.valueForKey("chatsLoadedTime") != nil { 
    time = "\(defaults.valueForKey("chatsLoadedTime") as! NSDate)" 
} 
chatsRef.queryOrderedByChild("updatedTime").queryStartingAtValue(time).observeEventType(.Value, withBlock: { snap in 

这里面查询我更新变量time,我想更新此chatsRef查询在新的价值time启动。我怎样才能做到这一点?

我的结构是:

user 
-userID 
--chatRooms 
---chatRoomID 
----updatedTime 
----recieverName 
----lastMes 
----read 
----recieverID 

我查询聊天室,在那里updatedTime比时间的流逝变大。当我从firebase收到快照时,我更新变量时间并想要查询聊天记录,其中up​​datedTime大于更新的变量时间。

+0

基于这个问题,你总是希望按时间查询最新的帖子。即A查询正在观察帖子节点。当一个职位是在8,你希望被通知,那么查询可以更新观察后的帖子9.然后,当一个职位是在9,你希望查询后观察职位10.是否声音正确吗? – Jay

+0

看起来相似。但有一点小错误。 “如果一篇文章是在8时发布的,那么您希望得到通知,那么查询可以更新以观察8之后的帖子(而不是9等等)。” –

+0

我更新了我的答案,以更好地反映您的问题。不过,在这一点上,似乎你总是想知道最近的(最后一个)帖子。所以如果一个帖子发生在8点,你会收到该帖子的通知,然后另一个帖子在8点01分发生,你希望被通知该帖子。然后,一个帖子发生在8点05分,您希望收到该帖子的通知。我在轨道上吗? – Jay

回答

2

看来你问是

我如何查询所有chatsRef子节点开始在特定的时间和时通知时,停止观察到的时间,增加的时间和观看那时。

它帮助,如果我们知道你的火力地堡的数据结构和你的完整的查询看起来像,但它似乎你会朝着正确的方向:

假设你有一个结构

chatsRef 
    chat_00 
    updated_time: "03" 
    chat_01 
    updated_time: "07" 
    chat_02 
    updated_time: "02" 

和您的查询

let chatsRef = self.myRootRef.childByAppendingPath("chatsRef") 

chatsRef.queryOrderedByChild("updated_time").queryStartingAtValue("02").observeEventType(.Value, withBlock: { snap in 

    for child in snap.children { 
     if let time = child.value["updated_time"] as? String { 
      print(time) 
     } 
    } 
}) 

这将返回从02开始的所有子节点,因此输出为

02 
07 

以及对updated_time为02或更大的现有节点的任何未来增加或更改将返回结果。

所以,如果一个孩子加入到包含updated_time的chatsRef节点:那么这些结果将自动

02 
04 
07 

返回记住.value的返回所有匹配的子节点的“04”查询标准,因此您需要通过.children遍历它们以获取每个节点的值。

+0

您误解了我:( )我想在每次接收到firebase的值后更新queryStartingValue,我想将其设置为当前时间 例如:当前时间是20:00。 我发送查询: 'time =“18:00”;当我收到结果时,我更新值'time =“20:00”' 但是我仍然会在19:00接收结果,例如,因为queryStartingValue wasn' t更新。 Bur我希望从下午20:00开始观察下一个查询,而不是18:00 –

+0

@TarasNikulin当我从Firebase收到值时,我不明白你的意思。代码中没有任何东西会从查询以外接收到值。你指的是哪些值?你可以发布你的Firebase结构吗?问题中没有足够的信息来真正回答它。 – Jay

+0

我已更新我的问题。希望你会明白 –