簡體   English   中英

使用Ionion Creator訪問Firebase數據時遇到問題

[英]Having trouble accessing firebase data with ionic creator

我是IOS開發人員,正在嘗試構建我的第一個應用程序。 但是,我無法訪問Firebase中的數據。

例如,我有以下數據: 例如,我有以下數據:

我將使用可以正常工作的用戶名和密碼登錄到應用程序,然后使用:

var user = firebase.auth().currentUser;
console.log(user.email + " " + user.username);

上面打印出“ quanie.turner@gmail.com未定義”,但是在數據庫中明確定義了用戶名變量。 也許我忽略了某件事或做錯了什么。 我將不勝感激。

編輯:我將數據存儲在注冊代碼中。 方法如下(順便說一句:scope.data數組包括username變量):

 function ($scope, $stateParams, $firebaseAuth, $firebaseArray, $state) { var auth = $firebaseAuth(); var ref = firebase.database().ref('users'); var users = $firebaseArray(ref); $scope.data = {}; $scope.signup = function(){ auth.$createUserWithEmailAndPassword($scope.data.email, $scope.data.password).then($scope.signupSuccess); } $scope.signupSuccess = function(){ users.$add($scope.data); $state.go('login'); } } 

謝謝

您似乎混淆了兩種產品:

  1. Firebase身份驗證,可讓您的用戶登錄您的應用,並具有帶有一組固定屬性的用戶個人資料。
  2. Firebase數據庫,它允許您存儲數據,通常用於存儲不適合其Firebase身份驗證配置文件的用戶的其他屬性。

您已獲取的代碼從Firebase身份驗證中讀取用戶的個人資料。 它不會從Firebase數據庫讀取任何內容。 Firebase身份驗證中的用戶配置文件沒有username屬性。 確實具有displayName屬性,但這又與Firebase數據庫無關。

您似乎通過以下調用將其他用戶信息存儲到了Firebase數據庫中:

firebase.database().ref("users").push({ email: user.email, password: password, username: username })

盡管這是在數據庫中存儲數據的有效方法,但它使得為Firebase身份驗證用戶查找數據變得困難。 后面的用戶由其UID( user.uid )標識,這就是為什么習慣將其他用戶屬性存儲在/users/$uid

firebase.database().ref("users").child(user.uid).set({ email: user.email, password: password, username: username })

如果具有該結構,則可以使用以下命令為當前用戶加載其他屬性:

var usersRef = firebase.database().ref("users");
usersRef.child(user.uid).once("value").then(function(snapshot) {
  console.log(snapshot.val());
});

使用當前結構,您可以查找用戶。 但是,由於您的結構中可能有多個用戶使用相同的電子郵件地址,因此您需要對其進行查詢,並且需要處理該查詢可能與多個節點匹配的事實:

var usersRef = firebase.database().ref("users");
var query = usersRef.orderByChild("email").equalTo(user.email);
query.once("value").then(function(snapshot) {
  snapshot.forEach(function(userSnapshot) {
    console.log(userSnapshot.val());
  });
});

更新資料

據我所知,您應該更換您的

users.$add($scope.data);

ref.child(firebase.auth().currentUser.uid).set($scope.data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM