簡體   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