我正在尝试使用firebase数据库登录,其中我已经存储了一些数据。
所以我需要发布某种查询来搜索与输入的凭据匹配的特定节点作为输入,并查看其参考密钥以进行确认。 这是我的代码,它似乎没有成功,因为它始终用于异常情况并发出错误吐司。 我不仅有必要解决我的问题。
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 :(得分:0)
您无法将查询强制转换为DatabaseReference。而不是:
DatabaseReference muserid = (DatabaseReference) muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString());
这样做:
Query myquery = muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString());
答案 1 :(得分:0)
Firebase不是关系数据库。这是一个NOSql数据库。事情在这里有点不同。速度是最终的目标,而不是他们所说的空间! 如果要根据移动无输入检索父键,则在root下创建另一个节点“MobileNoDetails”。在“MobileNoDetails”节点下,将用户移动号码存储为键,并在其下存储用户父键“31201000004”。这就是您输入手机号码时可以检索用户父键的方式。