来自过滤器函数的返回值中的AngularJs错误

时间:2016-08-22 17:08:19

标签: angularjs firebase firebase-realtime-database firebase-util

我想过滤一个Firebase路径,看看我的路径中是否存在一个孩子 我只想返回有路径调用的值"响应"。它有效但当路径没有这个孩子时,它会给我这个错误:

    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;以外的其他方式进行测试?谢谢

1 个答案:

答案 0 :(得分:2)

听起来data.responsesundefined所以您可以像这样检查$value

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

这可以确保在responses探测data之前$value上有一个string字段。