Как связать каждого пользователя с их данными в Firebase?

Я планирую создать главное дерево с именем users, которое будет включать имена различных пользователей, используемых в качестве имени пользователя. Итак, с каждого имени пользователя будут включены их данные, например. ФИО, адрес, номер телефона.

Я хочу знать, как получить данные каждого пользователя, когда они входят в свой профиль.

Ответы

Ответ 1

Прежде всего, я предлагаю вам потратить некоторое время на ознакомление с Firebase, прочитав Руководство по Firebase (Ссылка на старое Руководство по Firebase). Все, что вам нужно знать, чтобы ответить на свой вопрос, доступно там. Но для простоты я приведу пример здесь:

Начнем с безопасности, вот основные правила Firebase, которые вам нужны для этого примера: (источник: Понимание безопасности) (старый источник: Понимание безопасности)

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

Я пропущу фактическое создание пользователя и вход в систему и сосредоточусь на вопросе о хранении и получении пользовательских данных.

Хранение данных: (источник: Аутентификация Firebase) (старый источник: Аутентификация пользователя)

// Get a reference to the database service
var database = firebase.database();
// save the user 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
  });
}

Полученные данные о базе данных будут выглядеть следующим образом:

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

И последнее, но не в последнюю очередь получение данных, это можно сделать несколькими способами, но для этого примера я собираюсь использовать простой пример из руководства по Firebase: (источник: Чтение и запись данных) (старый источник: получение данных)

//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, вы получите ссылку на местоположение на основе вашего идентификатора пользователя и получите следующие данные:

"twitter:123": {
          "username": "twitter",
          "email": "Andrew Lee"
        }

Ответ 2

В angular 1 с угловым огнем

код контроллера:

var ref = firebase.database().ref().child("users/" + firebase.auth().currentUser.uid);

var syncUserObject = $firebaseObject(ref);
syncUserObject.$bindTo($scope, "data");

html view:

<input type="text" ng-model="data.username"/>
<!-- all changes from our Firebase database magically appear here! -->
<p>You said: {{ data.username }}</p>

Это создает очень приятную трехстороннюю привязку данных!