【问题标题】:Add a listener to a child inside of a firebase generated key?将侦听器添加到 firebase 生成的密钥中的子项?
【发布时间】:2016-03-26 11:14:47
【问题描述】:

给定布局

+ activity
  + -K5p_pBXog4kb0SVLXxj
    text:'something',
    when:111
    + thread
      + -K5paF53zm3cuudP9FUQ 
        id:8,
        text:'something else'

有没有办法为 /activity/*/thread 等活动中的任何新“线程”插入添加侦听器?

当添加新活动时,我会收到有关这些活动的提要,但是当附加线程时,什么都不会触发。我是否需要将 [thread] 部分移到它自己的根目录,并将线程 ID 与活动 ID 匹配,以了解何时对主活动线程进行了线程评论?

【问题讨论】:

    标签: javascript json firebase


    【解决方案1】:

    根据您的评论更新答案。

    你想听/activity/$theid/thread/$threadId

    与其嵌套,不如将/thread/$threadId 拆分到它自己的根位置。

    {
      "threadActivity": {
         "$activityId": {
            "$threadId" : {
    
            } 
         }
       } 
    }
    

    现在添加新线程时,您只需收听/threadActivity/$activityId

    var ref = new Firebase('https://<my>.firebaseio.com/threadActivity');
    var activityRef = ref.child('some-id');
    activityRef.on('child_added', function(snap) {
      // will update you for every child at the location and each child added
      console.log(snap.val()); 
    });
    

    【讨论】:

    • 这是一个网络平台,主要问题是任何登录用户都可以创建一个在所有浏览器上更新的主线程,但是当管理员将他们的评论添加到主线程时,我们通过“ /activity/theid#/thread" 但没有其他客户端看到更新。我无法为每个 /activity/activity ID #/thread 添加侦听器,这就是为什么我询问是否可以执行 /activity/*/thread - 然后添加评论时,我可以提取活动 ID 并更新正确的用户界面元素。我可能不得不重新考虑这是如何实施的。
    • 这是有道理的。我更新了我的答案。如果你重新设计你的数据结构,事情会容易得多。
    • 像您的示例一样进行了调整,现在提要效果很好。
    • 让我知道答案是否还有其他考虑因素。如果没有,请将其标记为已接受,最好保持未回答的队列干净。
    • 既然你说我的回答对你有用,你能把它标记为接受吗?这就是 Stackoverflow 的工作方式。如果您的问题还有什么我应该知道的,请告诉我。
    猜你喜欢
    • 2016-03-25
    • 2013-02-17
    • 2011-09-28
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多