web-dev-qa-db-ja.com

各ユーザーをFirebaseのデータにリンクするにはどうすればよいですか?

ユーザー名として使用される別のユーザーの名前を含む、usersという名前のメインツリーを作成する予定です。したがって、各ユーザー名からデータが含まれます。氏名、住所、電話番号.

各ユーザーがプロファイルにログインしたときに、各ユーザーのデータを取得する方法を知りたい。

33
Oladipo Isola

まず、 Firebase Guide古いFirebase Guideへのリンク )を読んで、Firebaseに慣れるのに時間をかけることをお勧めします。自分の質問に答えるために知っておく必要があることはすべてそこにあります。しかし、簡単にするために、ここに例を示します。

セキュリティから始めましょう。ここに、この例に必要な基本的なファイアベースルールを示します。(ソース: nderstanding Security )(古いソース: nderstanding Security

{
  "rules": {
    "users": {
      "$user_id": {
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

実際のユーザー作成とログインをスキップし、ユーザーデータの保存と取得に関する質問に焦点を当てます。

データの保存:(ソース: Firebase Authentication )(古いソース: ユーザー認証

// Get a reference to the database service
var database = firebase.database();
// save the user's profile into Firebase so we can list users,
// use them in Security and Firebase Rules, and show profiles
function writeUserData(userId, name, email, imageUrl) {
  firebase.database().ref('users/' + userId).set({
    username: name,
    email: email
    //some more user data
  });
}

結果のfirebaseデータは次のようになります。

{
  "users": {
    "simplelogin:213": {
      "username": "password",
      "email": "bobtony"
    },
    "Twitter:123": {
      "username": "Twitter",
      "email": "Andrew Lee"
    },
    "facebook:456": {
      "username": "facebook",
      "email": "James Tamplin"
    }
  }
}

最後に重要なことですが、データの取得はいくつかの方法で行うことができますが、この例ではfirebaseガイドの簡単な例を使用します:(source: Read and Write data ) (古いソース: データの取得

//Get the current userID
var userId = firebase.auth().currentUser.uid;
//Get the user data
return firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) {
    //Do something with your user data located in snapshot
});

編集:戻りデータの例を追加

したがって、ユーザーTwitter:123としてログインすると、ユーザーIDに基づいて場所への参照が取得され、このデータが取得されます。

"Twitter:123": {
          "username": "Twitter",
          "email": "Andrew Lee"
        }
67
André Kool