1

火災基地に関する質問があります。Firebase - データの保存

登録画面」という3つの画面があるアプリを開発しています。ここで、ユーザーは電子メールとパスワードでアカウントを作成します。 '建物プロファイル画面'は、ユーザーがプロフィールに実装するいくつかの質問に答えます(「あなたの名前は何ですか?」など)。最後に、ユーザー名などのユーザー情報が表示される 'プロファイル画面'が表示されます。 「登録画面」私は問題のないよに

、ユーザーは電子メールの入力とパスワードの入力を埋め、そして.createUserWithEmailAndPasswordを呼び出して、「アカウントを作成」をクリックすることで、ユーザーアカウントが作成され、それがあります'建物プロファイル画面'に移動しました。私が持っている質問は、 '建物のプロファイル画面'です。私の質問は:どのように私はユーザー名やその他のデータを保存できますか? 私はその件に関していくつかの記事を読んだが、私は理解が難しかった。あなたの誰かがこれで私を助けることができますか?

+0

?データベース? – Wainage

答えて

0

あなたは、ユーザー固有の情報を保持するために、各ユーザーごとにfirebaseにノードを作成したいと思うでしょう。

users: { 
    uid_a: { 
    username: 'uid_as_username', 
    email: 'uid_as_email', 
    name: 'uid_as_name', 
    other_attribute: 'uid_as_other_attribute_value' 
    [,...] 
    }, 
    uid_b: { 
    username: 'uid_bs_username', 
    email: 'uid_bs_email', 
    name: 'uid_bs_name', 
    other_attribute: 'uid_bs_other_attribute_value' 
    [,...] 
    } 
    [,...] 
} 

かそこらのように分割:データベース構造はとても似均一にすることができ、選択した

usernames: { 
    uid_a: 'uid_as_username', 
    uid_b: 'uid_bs_username' 
    [,...] 
}, 
emails: { 
    uid_a: 'uid_as_email', 
    uid_b: 'uid_bs_email' 
    [,...] 
}, 
names: { 
    uid_a: 'uid_as_name', 
    uid_b: 'uid_bs_name' 
    [,...] 
}, 
other_attribute: { 
    uid_a: 'uid_as_other_attribute_value', 
    uid_b: 'uid_bs_other_attribute_value' 
    [,...] 
} 

は、設計上の選択であるが、アイデアのthats。

0

@ Vincentの回答を補完するだけで、デフォルトでfirebase auth(ユーザープロファイルの取得:https://firebase.google.com/docs/auth/web/manage-users)内にユーザー名、電子メール、およびフォトURLを保存することができます。

郵便番号、電話番号などの詳細情報を保存する必要がある場合は、データベースにusersのようなノードを作成し、必要なデータをすべて保存することができます。 auth用に作成された同じUIDをデータベースのIDとして使用することもできます。こうすることで、将来的にユーザー情報を入手することが容易になります。あなただけのメールアドレスとパスワードを持つユーザーを作成すると

、あなただけの一例として、上記のコードを考えてみましょうuserを返し、この

firebase.database.ref(`Users/${user.uid}`).set({ 
name: this.state.name, 
email: this.state.email, 
}); 

ようなスクリプトを使用してデータベースに追加することができます。

.push()の代わりに.set()を使用することを推奨します。 .push() firebaseを使用すると、変更できないランダムなIDが作成されます。 .set()を使用すると、ノードの値を判別できます。

希望します。

+0

firebase authにユーザー名と電子メールを保存するには、.createUserWithEmailAndPasswordを使用しません。 –

+0

'.createUserWithEmailAndPassword'を使用する場合は、ユーザの電子メールを提供する必要があります。あ、はい。 firebase authに電子メールを保存するために使用します。 'user'オブジェクト(' firebase.auth()。currentUser')には、firebaseが認証されたユーザの名前を格納するために使用する 'displayName'という名前のプロパティがあります。したがって、ユーザの名前だけを格納する必要がある場合、データベースにノードを作成する必要はありません。デフォルトでは、 'user'が提供するプロパティを使用できます。ただし、他の認証タイプを使用している場合は、データベースに 'Users /'というノードを作成してそのデータを格納することができます。それが役に立てば幸い。 – soutot

0

これは、データベースからデータを更新およびフェッチする方法を手がかりにしている公式のドキュメントから抜粋したものです。Androidの

ためFirebaseリアルタイムデータベースの設定

がFirebase SDKをインストールFirebaseにアプリを接続します。 Firebaseコンソールで、あなたのアプリケーションを Firebaseプロジェクトに追加してください。リアルタイムのデータベースが提供する

compile 'com.google.firebase:firebase-database:11.2.2' 

設定Firebaseデータベースのルール:あなたのアプリレベル build.gradleファイルにFirebaseリアルタイムデータベースのための依存関係を追加します

あなたのアプリにリアルタイムのデータベースの追加 のデータが構造化される方法、どのようにインデックス化されるべきか、データの読み書きが可能なときを定義するための宣言的規則言語です。 既定では、データベースへの読み取りと書き込みのアクセスが制限されているため、 認証ユーザーのみがデータの読み取りや書き込みができます。 認証を設定せずに開始するには、公開のルールを設定して にアクセスできます。これにより、あなたのアプリケーションを使用している人でなくても、誰でもデータベースを開くことができます。したがって、 認証を設定したときにデータベースを再度制限するようにしてください。

あなたのデータベースへの書き込み

あなたが書きたい場所をのgetInstanceを(使用してデータベースのインスタンスを取得)し、 参照。

// Write a message to the database 
FirebaseDatabase database = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = database.getReference("message"); 

myRef.setValue("Hello, World!"); 

あなたは Javaオブジェクトを含め、データベースにこの方法をデータ型の範囲を保存することができます。オブジェクトを保存すると、ゲッターからの応答 がこの場所の子として保存されます。リアルタイムでアプリのデータ更新を行うために、データベース

から

読む、あなたが作成した参照に ValueEventListenerを追加する必要があります。

このクラスのonDataChange()メソッドは、リスナーが の場合に1回トリガーされ、データが変更されるたびに(子が など)トリガーされます。あなたがデータを保存している

// Read from the database 
myRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // This method is called once with the initial value and again 
     // whenever data at this location is updated. 
     String value = dataSnapshot.getValue(String.class); 
     Log.d(TAG, "Value is: " + value); 
    } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
     Log.w(TAG, "Failed to read value.", error.toException()); 
    } 
}); 
関連する問題