Firebase:结合查询和子事件侦听器

时间:2018-06-06 02:33:02

标签: firebase firebase-realtime-database nativescript

我的结构类似于

{
  posts : {
    post1Key: {
      title : "First Post",
      comments : {
        comment1Key : {},
        comment2Key : {},
        comment3Key : {}
      }
    }
  }
  ...
}

我正在使用“/ posts / post1Key / comments”键上的“子更新”事件来收听新评论。

如何组合Firebase查询和事件侦听器。

修改:我知道这可以通过Firebase实现,但是,我正在使用nativescript-plugin-firebase

2 个答案:

答案 0 :(得分:2)

您可以将使用Query方法定义的orderBy...和使用on()方法的听众合并:详见文档here

例如,您可以执行类似

的操作
var query = db.ref('node1').orderByChild('firstName');

query.on('value', function(dataSnapshot) {
  dataSnapshot.forEach(function(childSnapshot) {
    var childKey = childSnapshot.key;
    console.log(childKey);
    var childData = childSnapshot.val();
    console.log(childData); 
  });
});

每次在“node1”下添加新的子节点时,您将获得按firstName排序的子列表

答案 1 :(得分:1)

在撰写本文时,使用nativescript-plugin-firebase无法做到这一点。解决方法是在接收到数据后在eventHandler中进行排序/过滤。

var onChildEvent = function(result) {
  //
  // Sort: result.value here
  //
};

// listen to changes in the /users path
firebase.addChildEventListener(onChildEvent, "/users").then(
  function(listenerWrapper) {
    var path = listenerWrapper.path;
    var listeners = listenerWrapper.listeners; // an Array of listeners added
    // you can store the wrapper somewhere to later call 'removeEventListeners'
  }
);