2

ユーザーストアを備えた FireBase db があります。また、簡単なログイン メール/pw も使用します。ユーザー ストアでは、ユーザーの追加情報をいくつか保存します。たとえば、最終ログイン日です。これは私のワークフローです - 登録からログインまで:

ユーザーを登録します。登録すると、簡単なログインメール/パスワードに追加されます; また、登録済みユーザー (simplelogin から返された ID を含む) をユーザー ストアに追加します。Firebase で生成された一意のキーの下に保存されます。

その新しいユーザーとしてログインします 成功すると、simplelogin ストアからユーザー オブジェクトを取得します。

email-"testuser1@test.com"
firebaseAuthToken-"eyJ0eXAiOiJKV1QiLCJhbGci...SoXkddR3A88vAkENCy5ilIk"
id-"46"
isTemporaryPassword-false
md5_hash-"6a4b6cb2045fd55f706eaebd6ab5d4f7"
provider-"password"
uid-"simplelogin:46"

ここで、ユーザー ストア内の対応するユーザーを更新します。たとえば、lastlogin キーを今に設定します。ただし、Firebase が生成したキーが下にあることがわかっている場合にのみ、そのユーザーを更新できます。どうすればそのキーにアクセスできますか?

ユーザー ストア内のユーザーを識別する他の唯一の方法は、ユーザー ストア内のすべてのユーザーを取得し、それらすべてをループして、現在の ID キー値がログイン ユーザーの ID キー値と一致するかどうかを確認することです。私には少し不器用に見えますが、これがfirebaseでルックアップを行う唯一の方法だと思いますか?

4

1 に答える 1

1

登録済みユーザーを保存するときは、生成された ID ではなく、ユーザー ID で保存する必要があります。このようにして、ユーザーが再度ログインすると、ユーザー ノードからユーザーを取得するために uid を使用します。

var fbRef = new Firebase('https://<YOUR-FIREBASE>.firebaseio.com');
var auth = new FirebaseSimpleLogin(fbRef, function(error, user) {
  if (error) {
    console.error(error);
  } else if (user) {
    // when a user logs in we can update their lastLogin here
    // set the key to the uid for the user
    // this would look like: https://myapp.firebaseio.com/users/1
    fbRef.child('users').child(user.uid).update({
       lastLogin: Firebase.ServerValue.TIMESTAMP // the time they logged in
    });
  }
});

// here when we create a user we will set the key to the uid under the users node
auth.createUser(email, password, function(error, user) {
  // if there is no error
  if (!error) {
    // go to the users node, then set a location at the user's uid
    // this would look like: https://myapp.firebaseio.com/users/1
    fbRef.child('users').child(user.uid).set(user);
  }
});

ユーザーが作成されると、ユーザー ノードは次のようになります。

ユーザー ノード

于 2014-07-04T21:59:55.720 に答える