0

私はJavascriptとIonicの初心者です。データベースからデータを表示するだけで頭を悩ませています。firebaseデータを表示した結果がありません

ただし、デバイスのさまざまな理由でこれを実行中に私のコンソールをチェックすることはできません。

とにかく、ここで私は、ユーザーの「説明」を表示するために使用するコードは次のとおりです。

// Get a database reference to our posts 
var descriptionRef = new Firebase("https://swapizapplication.firebaseio.com/accounts/-KOkwpzslw9NyUrTtvA7"); 
// Attach an asynchronous callback to read the data at our posts reference 
descriptionRef.on("value", function(snapshot) { 
var descriptionSnapshot = snapshot.child("displayDescription"); 
var description = descriptionSnapshot.val(); 
    console.log(snapshot.val()); 
}, function (errorObject) { 
    console.log("The read failed: " + errorObject.code); 
}); 

私が欲しいのは、私はにリンクされたHTMLページに{{説明}}を書くときということですそのコードを持つコントローラは、 "displayDescription"(そのユーザーのデータベース内のフィールドの1つの名前)に「-KOkwpzslw9NyUrTtvA7」というユーザーのデータベースのデータを表示します。

ただし、データは表示されません。ページが表示され、特にエラーは表示されませんが、データは表示されません。

.controller('AccountCtrl', function($scope, $state, $cordovaOauth) { 
    $scope.$on('$ionicView.enter', function() { 
     //Get logged in user credentials. 
     var user = firebase.auth().currentUser; 
     var name, email, photoUrl, provider; 


      console.log("User: " + JSON.stringify(user)); 
     if (user != null) { 
     name = user.displayName; 
     email = user.email; 
     photoUrl = user.photoURL; 
     provider = user.provider; 
     description = user.displayDescription 

     } 

     //Set Profile Image. 
     $scope.profileImage = photoUrl; 
     //Set Profile Name. 
     $scope.profileName = name; 
     //Set Profile email. 
     profileEmail = email; 
      //Set provider. 
      provider = provider; 

// Get a database reference to our posts 
var descriptionRef = new Firebase("https://swapizapplication.firebaseio.com/accounts/-KOkwpzslw9NyUrTtvA7"); 
// Attach an asynchronous callback to read the data at our posts reference 
descriptionRef.on("value", function(snapshot) { 
var descriptionSnapshot = snapshot.child("displayDescription"); 
var description = descriptionSnapshot.val(); 
    console.log(snapshot.val()); 
}, function (errorObject) { 
    console.log("The read failed: " + errorObject.code); 
}); 
    }); 
    }); 

NOOBを助けるためにすべてのアイデア:ここ

は、私は私のコントローラ(フルビュー)を作った方法ですか? :P

EDITは:私のデータベースのJSONを追加します。

{ 
    "-KOjv0LDdoWrc3uApvPi" : { 
    "dateCreated" : "Tue Aug 09 2016 11:29:18 GMT-0400 (EDT)", 
    "email" : "[email protected]", 
    "provider" : "Facebook", 
    "userId" : "FMXlUQZth5aehQLT2TKZZJZdJBh2" 
    }, 
    "-KOkwpzslw9NyUrTtvA7" : { 
    "dateCreated" : "Tue Aug 09 2016 16:16:52 GMT-0400 (EDT)", 
    "displayDescription" : "no description", 
    "email" : "[email protected]", 
    "provider" : "Facebook", 
    "userId" : "F9Z7YhSlmAQqOH5FVjBSV2CkYZG3" 
    } 
} 

EDIT 2:

を私はそれはまだ動作したくない、別の解決策のために行くと考えます!

.controller('AccountCtrl', function($scope, $state, $cordovaOauth) { 
    $scope.$on('$ionicView.enter', function() { 
    //Get logged in user credentials. 
    var user = firebase.auth().currentUser; 
    var name, email, photoUrl, provider, description; 

    console.log("User: " + JSON.stringify(user)); 
    if (user != null) { 
     name = user.displayName; 
     email = user.email; 
     photoUrl = user.photoURL; 
     provider = user.provider; 
    } 

    //Set Profile Image. 
    $scope.profileImage = photoUrl; 
    //Set Profile Name. 
    $scope.profileName = name; 
    //Set Profile email. 
    $scope.profileEmail = email; 
    //Set provider. 
    $scope.provider = provider; 

     var descriptionRef = firebase.database().ref('accounts/' + user + '/displayDescription/'); 
     descriptionRef.on('value', function(snapshot) { 
     description = snapshot.val(); 
     $scope.description = description; 
     $scope.$apply(); 
     }); 
    }); 

答えて

0

ここでの主な問題に答えるために、あなたは$スコープに「説明」をさらすしていないので、HTMLテンプレートには、「説明」は存在していることを知りません。だから{{description}}に電話すると、おそらくundefinedが表示されます。そのため、何も印刷されません。

次に、firebaseを参照してください。ステートメントfirebase.auth().currentUserは、ログインしているかどうかによって、firebase.Userまたはnullを返します。 A firebase.Userにはproviderの定義が含まれていません。代わりに、providerIdまたはproviderDataを使用してください。また、firebase.UserにはdisplayDescriptionの定義も含まれていません。それは/accounts/-KOkwpzslw9NyUrTtvA7/displayDescriptionのようにユーザーデータで定義した任意のキーです。

私はこれで問題が解決しなければならない間違っていない場合:

.controller('AccountCtrl', function($scope, $state, $cordovaOauth) { 
    $scope.$on('$ionicView.enter', function() { 
    //Get logged in user credentials. 
    var user = firebase.auth().currentUser; 
    var name, email, photoUrl, provider, description; 


    console.log("User: " + JSON.stringify(user)); 
    if (user != null) { 
     name = user.displayName; 
     email = user.email; 
     photoUrl = user.photoURL; 
     provider = user.providerId; 
    } 

    //Set Profile Image. 
    $scope.profileImage = photoUrl; 
    //Set Profile Name. 
    $scope.profileName = name; 
    //Set Profile email. 
    $scope.profileEmail = email; 
    //Set provider. 
    $scope.provider = provider; 

    // Get a database reference to our posts 
    var descriptionRef = new Firebase("https://swapizapplication.firebaseio.com/accounts/-KOkwpzslw9NyUrTtvA7"); 
    // Attach an asynchronous callback to read the data at our posts reference 
    descriptionRef.on("value", function(snapshot) { 
     var descriptionSnapshot = snapshot.child("displayDescription"); 
     description = descriptionSnapshot.val(); 
     $scope.description = description; 
     console.log(snapshot.val()); 
    }, function (errorObject) { 
      console.log("The read failed: " + errorObject.code); 
     }); 
    }); 
}); 
+0

こんにちは!まず、私に答えて、コードをもっと見やすくする時間をとってくれてありがとう!私は本当にそれを感謝します:私は乱雑です! しかし、結果は同じです...何も表示されません...エラーである可能性があることを伝えるのは難しいです... – FrenchyNYC

+0

リトルEDIT:私のデータベースのJSON構造を追加しました。 made – FrenchyNYC

+0

その後、いくつかのことがあるかもしれません。たぶん、データベースセキュリティルール。または '.on( 'value'、...)'が呼び出されません。フィードバックを得るためにコンソールを使用することはできないので、HTLMタグを使用することをお勧めします。このようなもの: '

{{ output }}
'とコントローラの '$ scope.output'を公開すると作業ができます。 '$ scope.output'にデータを追加するだけで、貴重なフィードバックを得ることができます。 – manyrdz

関連する問題