2016-08-22 3 views
0

Я хотел бы отфильтровать путь Firebase и посмотреть, существует ли ребенок на моем пути.
Я просто хочу вернуть значения, у которых есть дорожный вызов «reponses». Это работает, но когда путь не имеет этого ребенка, это бросить мне эту ошибку:
Ошибка AngularJs в возвращаемом значении из функции фильтра

firebase.js:283 Uncaught TypeError: Cannot read property '$value' of 
    firebase.js:276 FIREBASE WARNING: Exception was thrown by user callback. 
    TypeError: Cannot read property '$value' of undefined 

я использую Firebase-Util и Angularfire так:

var ref = firebase.database().ref(); 

    var nc = new firebase.util.NormalizedCollection(
    ref.child('accounts/' + $localStorage.accountId + '/demandes'), 
    [ref.child('demandes'), 'widget2']).select('widget2.duree', 'widget2.derniere_modification', 'widget2.reponses', 'widget2.exp', 'widget2.ajout_le', 'widget2.localisation'). 
    filter(function(data, key, priority) { 
     return data.reponses.$value !== null; // This cause problems ! 
    }).ref(); 
    $scope.items = $firebaseArray(nc); 

Как я могу сделать проверить надлежащим образом, кроме return data.reponses.$value !== null;? Спасибо

+2

Почему бы не проверить наличие и возвращение детей (data.responses && data.responses. $ Value! == null)? – mhodges

ответ

2

Это звучит как data.responses это undefined, чтобы вы могли проверить $value, как это:

.filter(function (data, key, priority) { 
    return data.responses && data.responses.$value !== null; 
}).ref(); 

Это гарантирует, что существует responses поле на data, прежде чем исследовать его $value.

+0

Второе решение по-прежнему бросает мне ту же ошибку, но первая делает эту работу, спасибо за ваш ответ @Zach –

+0

Я не могу выдвинуть этот ответ, пока вы не удалите вторую часть кода. Ваш первый блок кода - это то, что я предложил в комментариях, и должен работать нормально. Тем не менее, во втором примере возвращение строки bool && чаще будет приводить к результатам, которые не являются интуитивными. См. Документацию по логическим операторам здесь. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators – mhodges

 Смежные вопросы

  • Нет связанных вопросов^_^