0

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;ですか? ありがとうございました

4

1 に答える 1

2

It sounds like data.responses is undefined so you could check for $value like this:

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

This makes sure that there is a responses field on data before you probe it for $value.

于 2016-08-22T17:13:32.330 に答える