programing

각 사용자를 Firebase의 데이터에 연결하려면 어떻게 해야 합니까?

newstyles 2023. 6. 23. 21:49

각 사용자를 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'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
  });
}

결과적인 화재 기반 데이터는 다음과 같습니다.

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

마지막으로 데이터를 검색하는 방법은 여러 가지가 있지만, 이 예에서는 방화벽 기반 가이드의 간단한 예를 사용합니다. (소스: 데이터 읽기쓰기) (이전 소스:데이터 검색 중)

//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
});

EDIT: 반환 데이터 예제 추가

따라서 사용자 twitter:123으로 로그인하면 사용자 ID를 기반으로 위치에 대한 참조가 표시되고 다음 데이터가 표시됩니다.

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

저는 좋은 보안을 위한 규칙을 설정하는 것에 대해 Andre의 의견에 동의하지만, 데이터를 조금 다르게 처리할 것입니다.문자열을 생성하는 대신 사용합니다.child()방법.그것은 개인적인 취향의 문제입니다.

UID를 가져오고 데이터 개체를 정의합니다.

let user = firebase.auth().currentUser
let uid = user.uid
let yourdata = { foo: 'something', bar: 'other'}

데이터 저장:

firebase.database().ref('users').child(uid).set(yourdata)
    .then((data) => {
        console.log('Saved Data', data)
    })
    .catch((error) => {
        console.log('Storing Error', error)
    })    

데이터 가져오기:

firebase.database().ref('users').child(uid).once('value')
    .then((data) => {
        let fetchedData = data.val()
        console.log('Fetched Data', fetchedData)
    })
    .catch((error) => {
        console.log('Fetching Error', error)
    })    

참고하시기 바랍니다.set()데이터를 재정의하여 사용할 수 있습니다.push()나중에

언급URL : https://stackoverflow.com/questions/30910704/how-do-i-link-each-user-to-their-data-in-firebase