为了账号安全,请及时绑定邮箱和手机立即绑定

如果另一个集合中的另一个值为 true,则从 Firebase 获取值

如果另一个集合中的另一个值为 true,则从 Firebase 获取值

繁星点点滴滴 2021-07-10 15:14:38
我目前在我的 Firebase 实时数据库中有一个 users 集合,其中包含我的所有用户和一个包含书籍名称和评级(竖起和竖起拇指的次数)的集合。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 我正在尝试制作一个可以不断显示书名(或我的数据库中的书名)的应用程序,以便人们可以对它们进行评分,但是我需要能够检查用户是否已经查看过这本书的书名(这是我需要帮助的部分)。有人可以帮助我从 Firebase 中提取数据并进行比较以查看用户是否查看过这本书的书名。这就是我的数据库设置的样子
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

要解决这个问题,请使用以下方法来检查用户是否看过一本书:


private void checkBookTitle(String bookTitle) {

    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();


    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

    DatabaseReference ref = rootRef.child("Users").child(uid).child("books_viewed");

    ValueEventListener valueEventListener = new ValueEventListener() {

        @Override

        public void onDataChange(DataSnapshot dataSnapshot) {

            if(dataSnapshot.exists()) {

                Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();

                for (Map.Entry<String, Object> entry : map.entrySet()) {

                    if (entry.getValue().equals(bookTitle)) {

                        Log.d(TAG, "User has viewed this book");

                    } else {

                        Log.d(TAG, "User has not viewed this book");

                    }

                }

            }

        }


        @Override

        public void onCancelled(@NonNull DatabaseError databaseError) {}

    };

    ref.addListenerForSingleValueEvent(valueEventListener);

}


查看完整回答
反对 回复 2021-07-23
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

首先,books_viewed变成一个数组。阅读本文以了解Firebase 实时数据库中的数组


现在它是一个数组,你可以ArrayList<String>在你的应用程序中获取它。


public class User {

    public ArrayList<String> booksViewed;

    ... // Other variables

}

然后只需使用该contains功能检查您需要查找的书是否在该列表中


DatabaseReference userRef = FirebaseDatabase.getInstance().getReference().child("Users").child("<UserID>")


userRef.addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(DataSnapshot dataSnapshot) {

        User user = dataSnapshot.getValue(User.class);

        String bookTitleYouAreChecking = "Twilight"    

        if (user.booksViewed.contains(bookTitleYouAreChecking)) {

            // User has viewed

        } else { 

            // User has not viewed

        }

    }


    @Override

    public void onCancelled(DatabaseError databaseError) {

        // ...

    }

})


查看完整回答
反对 回复 2021-07-23
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信