Как я должен запрашивать сообщения в программе просмотра с определенным идентификатором пользователя? - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь использовать просмотрщик интерфейса Firebase UI для отображения серии сообщений определенного пользователя. У меня есть узел all_user_posts с ключами для каждого отдельного поста. Есть ли способ отобразить сообщения только с определенным идентификатором пользователя в дочерней паре ключ-значение? Если у кого-то есть какие-либо идеи, было бы очень признательно

Я использую Android Studio 3.2 с новейшими зависимостями для базы данных Firebase реального времени. Для других обзоров переработчиков в том же проекте я отобразил все сообщения, используя:

DatabaseReference postReference = FirebaseDatabase.getInstance().getReference().child("all_user_posts");
Query postQuery = postReference.orderByKey();

Но есть ли способ отображать только сообщения, для которых к postKey прикреплен определенный идентификатор пользователя?

private void displayAllPosts() {
    Query postQuery = postReference.orderByKey();
    FirebaseRecyclerOptions firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Posts>().setQuery(postQuery, Posts.class).build();
    FirebaseRecyclerAdapter<Posts, PostViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Posts, PostViewHolder>(firebaseRecyclerOptions) {
        @Override
        protected void onBindViewHolder(@NonNull final PostViewHolder holder, final int position, @NonNull Posts model) {

            //post key in 'all_user_posts' node
            final String PostKey = getRef(position).getKey();
        }

        @NonNull
        @Override
        public PostViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.layout_post, viewGroup, false);
            return new PostViewHolder(view);
        }
    };
    recyclerView.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.startListening();
}

1 Ответ

0 голосов
/ 01 октября 2019

Поскольку вы используете userId в базе данных, вы можете сделать следующее:

FirebaseUser user = FirebaseUser.getInstance().getCurrentUser()
Query postQuery = postReference.orderByKey().equalTo(user.getUid());

Это позволит получить только данные, относящиеся к userId

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...