Firebase функции поискового запроса базы данных в реальном времени с nodejs - PullRequest
0 голосов
/ 14 мая 2018

Это моя база данных

"Users" : {
        "2rnWA7TF11gSWxec7MsCA5iRhjw1" : {
          "favoriteCount" : 1,
          "interest" : [ "dogs", "cats", "technology" ],
          "speciality" : [ "Swift" ],
        },
        "3Id9oX0ZOEM00XJlnR07gGrHs762" : {
          "favoriteCount" : 7,
          "interest" : [ "dogs", "cats", "Asp.NET MVC", "JavaScript" ],
          "speciality" : [ "Microsoft Technologys" ],

      }

Я хочу получить доступ к информации о пользователях.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Ваша текущая структура данных позволяет вам легко искать интересы для конкретного пользователя.Тем не менее, он не позволяет легко искать пользователей для конкретного интереса.

Чтобы разрешить поиск пользователей по интересам, вам потребуется добавить инвертированную структуру данных /Interests/$interest с идентификатором пользователя для каждого пользователя:

"Interests": {
  "dogs": {
    "2rnWA7TF11gSWxec7MsCA5iRhjw1": true,
    "3Id9oX0ZOEM00XJlnR07gGrHs762": true
  },
  "cats": {
    "2rnWA7TF11gSWxec7MsCA5iRhjw1": true,
    "3Id9oX0ZOEM00XJlnR07gGrHs762": true
  },
  "technology": {
    "2rnWA7TF11gSWxec7MsCA5iRhjw1": true,
  }
  ...
}

Также см.:

0 голосов
/ 14 мая 2018

Вы можете делать запросы в Firebase:

Query query = usersDB.orderByChild("interest").equalTo("WHATEVERINTEREST");

query.addListenerForSingleValueEvent(new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
     Users user = dataSnapshot.getValue(Users.class);
     doWhatever();
   }
});

Однако в вашем случае, когда вы храните информацию в виде массива, вы можете получить всех пользователей, а в своем коде получить необходимую информацию.

 usersDB.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                ArrayList<Users> listOfUsers = new ArrayList<Users>();

                for (DataSnapshot dsp : dataSnapshot.getChildren()) {

                    Users user = dsp.getValue(Users.class);
                    listOfUsers.add(user);
                }

                //Check the Users that contains interest
                usersWithInterest(listOfUsers,"dogs");

            }


        });

Реализуйте простой метод, который читает весь список пользователей и проверяет пользователей с интересом к собакам:

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