$ firebaseArray $ indexFor()在给定值时找不到键

时间:2015-10-03 02:09:48

标签: firebase angularfire

我有这个火力基地:

users: {
   userId: {
      notifications: {
         notificationId: "Notification"
      }
   }
}

当给出“Notification”时,我试图找到它的notificationId(它是从push()方法生成的),所以我最终可以删除它。根据文档,$ indexFor()方法应该为我做这个。这是我的代码:

var ref = new Firebase('https://url.firebaseio.com/');

$scope.dismissNotification = function(notification) {
   var notificationRef = ref.child('users/' + $scope.currentUser.id + '/notifications');
   var notifications = $firebaseArray(notificationRef);
   notifications.$loaded().then(function(data) {
     console.log(data);
     console.log(data.$indexFor(notification));
   }).catch(function(error) {
     console.log('Error: ' + error);
   });
};

第一个日志是正确的对象,里面有我正在寻找的通知字符串,但第二个日志返回-1,当我希望它返回与之关联的notificationId时。

1 个答案:

答案 0 :(得分:2)

不确定您要完成的任务,但这是查找给定值的密钥的最简单方法:

var notificationRef = ref.child('users/' + $scope.currentUser.id + '/notifications');

var query = notificationRef.orderByValue().equalTo(notification);

query.once('child_added', function(snapshot) {
    console.log(snapshot.key());
});