Как обновить пользователя в следующей структуре - PullRequest
0 голосов
/ 15 ноября 2018

Предполагая, что мой пользователь посещает места в мире, а база данных выглядит следующим образом, как лучше удалить пользователя из старого места и отправить его на новое место (чтобы этот уникальный пользователь мог только в одном месте сразу)?

У первого пользователя location A:

database
    |
   places
      |___location A
      |        |___user1: "exact coordinates"
      |
      |___location B
               |___user2: "exact coordinates"

И вот как я хочу, чтобы он выглядел после перемещения user1 в location B:

   database
        |
       places
          |___location B
                   |___user1: "exact coordinates"
                   |___user2: "exact coordinates"

Как переместить user1 в location B, удаляя его из location A? Мне трудно найти правильный синтаксис, чтобы просто удалить (уникально идентифицированный) user1 из его старого места в его новое место.

1 Ответ

0 голосов
/ 15 ноября 2018

При использовании вашей текущей структуры базы данных, чтобы изменить местоположение пользователя, вы выполняете 3 операции:

  1. Считайте текущее местоположение вашего пользователя:

    database -> places -> location A -> user1
    
  2. Скопировать текущее местоположение в новое местоположение:

    database -> places -> location B -> user1
    
  3. Удалить старое местоположение:

    database -> places -> location A
    

Эту проблему можно решить с помощью одной операции обновления. В этом случае вам следует подумать об изменении структуры вашей базы данных примерно так:

Firebase-root
   |
   --- users
        |
        --- uid
             |
             --- lat: 48.856151
             |
             --- long: 2.298115

Чтобы обновить местоположение пользователя, вы должны обновить только эти два свойства, как показано в следующих строках кода:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child(uid);
Map<String, Object> map = new HashMap<>();
map.put("lat", 41.890362);
map.put("long", 12.492263);
uidRef.updateChildren(map);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...