2016-12-08 21 views
1

firebaseデータベースを使用してログインしようとしていますが、すでにデータが保存されています。AndroidスタジオでFirebaseデータベースを照会する

This is my Database tree!

だから私は、入力として入力した資格情報をマッチングされる特定のノードを検索するためのクエリのいくつかの種類を掲示し、確認のためにその参照キーを表示する必要があります。 ここは私のコードですが、これは成功するようには思えません。常に例外的なケースになり、エラートーストを出すからです。 私は自分の問題を解決する必要があります。

public class LogInActivity extends AppCompatActivity { 

    DatabaseReference Rootref = FirebaseDatabase.getInstance().getReference(); 
    DatabaseReference mwritefarmref = Rootref.child("WRITE FARM"); 
    DatabaseReference muserprofilestab = mwritefarmref.child("USER PROFILES"); 

    EditText mobinputtext; 
    EditText passwordinputtext; 
    TextView tv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_log_in); 

     mobinputtext = (EditText) findViewById(R.id.mobinputtext); 
     passwordinputtext = (EditText) findViewById(R.id.passinputtext); 
     tv = (TextView) findViewById(R.id.textView); 

     Button submitbutton = (Button) findViewById(R.id.submitbutton); 
     submitbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       try { 
        DatabaseReference muserid = (DatabaseReference) muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString()); 
        tv.setText(muserid.getKey()); 
       }catch (Exception e){ 
        Toast.makeText(LogInActivity.this, "ERROR!!", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

    } 
} 
+0

まず、データベース構造を変更することから始めます。また、 'keys 'に空白を入れないようにしてください。 camelCaseLettersを使用します。 –

+0

おお!アドバイスをありがとう! :D –

+0

しかし、今このDataBase自体に必要な作業を実行する方法はありますか? –

答えて

0

QueryをDatabaseReferenceにキャストすることはできません。代わりに:

DatabaseReference muserid = (DatabaseReference) muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString()); 

次の操作を行います。

Query myquery = muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString()); 
+0

お返事ありがとうございました! :) しかし、私はすでにそれを試してみました...... 一度私がそのようなクエリを追加し、取得したクエリのKEYを出力すると、 "USER PROFILES"を返していますが、 "3120100004"は Soooo? –

0

Firebaseは、リレーショナルデータベースではありません。これはNOSDBです。ここでは少し違うことがあります。彼らが言うように、スピードは究極の目標ではありません!
モバイルキーの入力に基づいて親キーを取得する場合は、ルートの下に別のノード「MobileNoDetails」を作成します。 「MobileNoDetails」ノードの下に、ユーザーの携帯電話番号をキーとして格納し、その下にユーザーの親キー「31201000004」を格納します。それはあなたが携帯電話番号を入力すると、ユーザーの親キーを取得する方法です。

+0

まあ、ありがとう!私は間違いなくあなたのポイントを持っています。私は間違いなくそのプロセスを乗り越えることができます。 :)しかし、あなたが知っているように、それは比較的複雑な方法であることが分かります。したがって、最終的には、私がそれをやろうとしているようにそれを行うのは不可能ですか? –

関連する問題