繁体   English   中英

如何从 Firebase 数据库中获取孩子的数据?

[英]How to get data from a child in Firebase Database?

我正在努力从我的数据库中的一个孩子那里获取数据以在TextView中设置文本。

这是我的数据库:数据库

我认为问题是我在Ansatte之后没有 Uid,而是name 如果我拿走name ,并且只有Ansatte 、 Uid 和数据的 rest ,它就可以工作。

这是我获取数据的代码:

 databaseReference = FirebaseDatabase.getInstance("").getReference("Ansatte");
    btnadd = (findViewById(R.id.btn_leggtilansatt));

    mAuth = FirebaseAuth.getInstance();
    currentid = mAuth.getCurrentUser().getUid();




    tvtest = findViewById(R.id.tvtest);

    databaseReference.child(currentid).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {

            if (snapshot.exists()){
                String user = snapshot.child("name").getValue().toString();

                tvtest.setText(user);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });

这是存储代码:

private void add() {
    String name = editText1.getText().toString().trim();
    String email = editText2.getText().toString().trim();
    String storage = editText3.getText().toString().trim();
    String password = tv.getText().toString().trim();

    if (!TextUtils.isEmpty(name)){





        mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {

                if (task.isSuccessful()){

                    Ansatt ansatt = new Ansatt (name, email, storage);

                    databaseAnsatt.child(name).child(mAuth.getUid()).setValue(ansatt);

                    Toast.makeText(getApplicationContext(), "Hei" , Toast.LENGTH_LONG).toString().trim();
                    Intent intent = new Intent(AddEmployeeActivity.this, MainActivity.class);
                    startActivity(intent);
                }
            }
        });

    }

为了能够获取存在于以下位置下的name字段的值:

root/Ansatte/Name/$uid

请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = db.child("Ansatte").child("Name").child(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            DataSnapshot snapshot = task.getResult();
            String name = snapshot.child("name").getValue(String.class);
            tvtest.setText(name);
            Log.d("TAG", name);
        } else {
            Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
        }
    }
});

logcat 中的结果将是:

name

而这个值也会被设置为你的tvtest TextView。


PS 不要忘记设置适当的安全规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM