AngularJs 过滤函数返回值错误

问题描述 投票:0回答:1

我想过滤 Firebase 路径并查看我的路径中是否存在子项。

我只想返回具有路径调用“reponses”的值。它可以工作,但是当路径没有这个 Child 时,它会抛出这个错误:

    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;
之外,我还能如何以正确的方式进行测试?谢谢你

angularjs firebase firebase-realtime-database firebase-util
1个回答
2
投票

听起来

data.responses
undefined
所以你可以像这样检查
$value

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

这可以确保在探测

responses
之前,
data
上有一个
$value
字段。

© www.soinside.com 2019 - 2024. All rights reserved.