Присоединяйтесь на Firebase - PullRequest
0 голосов
/ 21 марта 2019

У меня есть две "таблицы", которые USER и CONGE. В таблицу «CONGE» я вставил идентификатор пользователя. Однако я не знаю, как отобразить отпуск пользователя в соответствии с его идентификатором.

Я бы хотел опубликовать "Congé" по id.

{
  "conge" : {
    "-LaW8hzv8O3PSlZk6OPIJU" : {
      "Mouth" : "January",
      "id_user" : "LaW_9iIrm_-tiDpWEE7"
    }
  },
  "user" : {
    "-LaW_9iIrm_-tiDpWEE7" : {
      "email" : "asdfasdf",
      "name" : "Michel",
      "prenom" : "adadfas"
    },
    "-LaWfQpaRfludVkzAPvq" : {
      "email" : "dup@gmail",
      "name" : "Michel",
      "prenom" : "dupuis"
    },
    "-LaWfTTF-Lifs79bGbhy" : {
      "email" : "JC@gmail",
      "name" : "Jean ",
      "prenom" : "Louzis"
    }
  }
}

Code :

`
  var rootRef = firebase.database().ref().child("user");

  rootRef.on("child_added",function(snap){
    var name = snap.child("name").val();
    var email = snap.child("email").val();
    var prenom = snap.child("prenom").val();


$("#table_body").append("<tr><td>"+name+"</td><td>"+prenom+"</td><td>"+email+"</td></tr>");
    // $("#table_body").append("<tr><td>"+name+"</td><td>"+email+"</td><td><button id='rem' onclick='remove()'>Remove</button></td></tr>");
  });

function remove(){


  // console.log(firebase.database().ref().child('user').push().key);
  rootRef.remove();
location.reload();
}

function add(){

  console.log(name);
  alert("COOL");
}`

Display

1 Ответ

1 голос
/ 22 марта 2019

В мире NoSQL очень часто дублируют данные, чтобы легко писать свои запросы (вы найдете много "литературы" по этому вопросу в Интернете).

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

Если вы продублируете данные следующим образом, вы получите информацию одним запросом:

{
  "conge" : {
    "-LaW8hzv8O3PSlZk6OPIJU" : {
      "Mouth" : "January",
      "id_user" : "LaW_9iIrm_-tiDpWEE7"
    }
  },
  "user" : {
    "-LaW_9iIrm_-tiDpWEE7" : {
      "email" : "asdfasdf",
      "name" : "Michel",
      "prenom" : "adadfas",
      "conges" : {
              "January" : true,
              "April" : true
      }
    },
    "-LaWfQpaRfludVkzAPvq" : {
      "email" : "dup@gmail",
      "name" : "Michel",
      "prenom" : "dupuis",
      "conges" : {
              "March" : true,
              "April" : true,
              "October" : true
      }
    },
    "-LaWfTTF-Lifs79bGbhy" : {
      "email" : "JC@gmail",
      "name" : "Jean ",
      "prenom" : "Louzis"
    }
  }
}

Единственный недостаток этого метода заключается в том, что вам необходимо синхронизировать два узла (т.е. conge и user). Но это легко сделать, одновременно записав в два узла базы данных, используя метод update (), как описано здесь: https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields

...