2015-10-03 53 views
0

時找不到鑰匙我有這個火力點:

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

當給定的「通知」,我試圖找到它的notificationId(從推送產生的()方法),所以我最終可以刪除它。根據文檔,$ 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。

+0

什麼是'notification'在這個例子嗎?它是''通知'內部存在的元素嗎?如果是這樣,你是如何驗證這一點的?如果不是,那是什麼?爲什麼$ firebaseArray()在dismissNotification()中定義?這沒有多大意義。 (我們正在下載路徑中的所有數據,以便在該路徑中查找一個元素,而不是直接查找該項目) – Kato

回答

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()); 
}); 
+0

對我而言,謝謝。你有什麼想法爲什麼[$ indexFor()函數](https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebasearray-indexforkey)不起作用? –

+0

最有可能的是,'notification'不是數組中存在的元素(因爲它是在數組創建之前傳遞給方法的),因此無法在其中找到。 – Kato