【问题标题】:how to query from firebase using array?如何使用数组从firebase查询?
【发布时间】:2018-07-29 01:46:29
【问题描述】:

我的目标是从user2 关注的user1, user3, user4 获取帖子。

 //Get datasnapshot at your "users" root node
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child
            ("Users").child("following").child(uid);

    ref.addListenerForSingleValueEvent(
            new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    //Get map of users in datasnapshot

                    collectDispayNames((Map<String, Object>) dataSnapshot.getValue());
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    //handle databaseError
                }
            });




private void collectDispayNames(Map<String, Object> users) {

    displayNames = new ArrayList<>();
    //iterate through each following, ignoring their UID
    for (Map.Entry<String, Object> entry : users.entrySet()) {

        //Get user map
        Map singleUser = (Map) entry.getValue();

        //Get following_id field and append to list
        displayNames.add((String) singleUser.get("who_i_follow"));

        //Toast.makeText(this, displayNames.toString(), Toast.LENGTH_LONG).show();

        int size = displayNames.size();
        if (size > 0){

            mDatabase = FirebaseDatabase.getInstance().getReference().child("Post").child("Blog")
                    .child("Contents").orderByChild("user_id").equalTo(displayNames.get(1));
        }else {

            mDatabase = FirebaseDatabase.getInstance().getReference().child("Post").child("Blog")
                    .child("Contents");
        }
        if (size >1){

            mDatabase = FirebaseDatabase.getInstance().getReference().child("Post").child("Blog")
                    .child("Contents").orderByChild("user_id").equalTo(displayNames.get(1));
        }else {
            mDatabase = FirebaseDatabase.getInstance().getReference().child("Post").child("Blog")
                    .child("Contents");
        }

    }
}

现在假设我检索user2 关注的所有用户到名为showOwnerId 的数组中

我可以得到 user2 关注者的数组,但是由于它有很多人关注,如何将它关注的所有用户 id 插入到这样的数据库查询中

        mDatabase = FirebaseDatabase.getInstance().getReference().child("Post").child("Blog")
                .child("Contents").orderByChild("user_id").equalTo(displayNames.get(1));

【问题讨论】:

    标签: java firebase firebase-realtime-database android-recyclerview


    【解决方案1】:

    没有办法一次性查询多个值。您必须为每个关注的用户运行单独的查询,并在客户端合并结果。

    由于 Firebase 可以pipeline these queries over a single connection,性能并没有一些开发者想象的那么差。

    【讨论】:

    • 能否请您将iOS中的代码重新编写为android(java)?我似乎不理解代码,因为我想使用 FirebaseRecyclerView 显示数据
    • 我没有分享任何 iOS 或 Android 代码。但是,如果您在代码中遇到问题,请更新您的问题以显示您为此尝试过的内容。但请注意,FirebaseUI 不支持显示多个查询。如果您需要这样做,则必须自己编写代码。
    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2017-05-29
    • 2020-12-04
    • 2016-10-09
    相关资源
    最近更新 更多