【问题标题】:Firebase Realtime Database Only Retrieving data with User's IDFirebase 实时数据库仅检索具有用户 ID 的数据
【发布时间】:2021-03-01 15:53:22
【问题描述】:

我需要帮助,伙计们。我正在尝试从仅由用户插入的 firebase 数据库中检索数据。我设法让用户发送他的 ID 和他的数据,现在我试图只获取他的数据。

这是代码

 public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        homeViewModel =
                ViewModelProviders.of(this).get(HomeViewModel.class);
        View root = inflater.inflate(R.layout.fragment_home, container, false);

        mUploads = new ArrayList<>();


        mStorage = FirebaseStorage.getInstance();

        fAuth = FirebaseAuth.getInstance();

        final String id = fAuth.getCurrentUser().getUid();

        final Upload u = new Upload();

        mDatabaseRef = FirebaseDatabase.getInstance().getReference("uploads");

        //Query query = mDatabaseRef.child("").equalTo("-MUiNO146Q64ztT_kY9y");

     
        mDBListener = mDatabaseRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                mUploads.clear();
                Upload upload2 = dataSnapshot.getValue(Upload.class);

                    for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                        Upload upload = postSnapshot.getValue(Upload.class);
                        //Toast.makeText(getContext(), id, Toast.LENGTH_LONG).show();
                            upload.setKey(postSnapshot.getKey());
                            mUploads.add(upload);

                    }







                mAdapter.notifyDataSetChanged();

                mProgressCircle.setVisibility(View.INVISIBLE);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                mProgressCircle.setVisibility(View.INVISIBLE);
            }
        });



        return root;
    }

这张图显示了数据库的结构

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    注释掉的代码你就快到了。

    您正在寻找的是一个查询,它允许您order/filter data。在您的情况下,您可以通过以下方式获取当前用户的上传:

    if (FirebaseAuth.getInstance().getCurrentUser() != null) {
      String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    
      mDatabaseRef = FirebaseDatabase.getInstance().getReference("uploads");
      Query query = mDatabaseRef.orderByChild("id").equalTo(uid);
     
      mDBListener = query.addValueEventListener(new ValueEventListener() {
          ...
    

    【讨论】:

      猜你喜欢
      • 2017-10-06
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 2020-12-09
      • 1970-01-01
      相关资源
      最近更新 更多