jak wyświetlić pobrane dane firabase w innym widoku przy użyciu JavaScript

Nov 19 2020

W przypadku nieparzystego identyfikatora chcę pokazać opis, a następnie obraz, a dla parzystego identyfikatora chcę pokazać obraz, a następnie opis. Ale jakiego kodu używam, podano poniżej.

var rootRef = firebase.database().ref().child("products");
rootRef.on("child_added", snap => {
    //alert(snap.val());
    var desp = snap.child("description").val();
    var image = snap.child("image").val();
    var image_and_desp_string =       
   '<div class="row">'
     + '<div class="col-md-6 col-sm-6 productDetails">'
         + '<p>' + desp + '</p>'
     + '</div>'
     + '<div class="col-md-6 col-sm-6">'
         + '<img src="' + image + '">'
     + '</div>'
    + '</div>';

    $("#product_section").append(image_and_desp_string);
});

ten kod pokazuje obok siebie obraz i opis dla wszystkich danych. Chcę zmienić dane dotyczące nieparzystych i parzystych identyfikatorów. Proszę pomóż!! Moja baza danych Firebase wygląda jak ten obraz.

Odpowiedzi

1 FrankvanPuffelen Nov 19 2020 at 14:28

Będziesz musiał pobrać klucz z każdej migawki, określić, czy jest nieparzysty, czy parzysty, a następnie zaktualizować kod HTML na tej podstawie.

var rootRef = firebase.database().ref().child("products");
rootRef.on("child_added", snap => {
    var key = snap.key;
    var isOdd = parseInt(snap.key) % 2 == 1;
    var desp = snap.child("description").val();
    var image = snap.child("image").val();
    var imageString = '<div class="col-md-6 col-sm-6">'
         + '<img src="' + image + '">'
     + '</div>';
    var despString = '<div class="col-md-6 col-sm-6 productDetails">'
         + '<p>' + desp + '</p>'
     + '</div>';
    var image_and_desp_string =       
   '<div class="row">'
     + (isOdd ? despString : imageString)
     + (isOdd ? imageString : despString)
    + '</div>';

    $("#product_section").append(image_and_desp_string);
});
Ferdousi Nov 19 2020 at 14:50

Nie można tego zrobić za pomocą forEach, kod szczegółów jest podany poniżej:

var query = firebase.database().ref("products").orderByKey();
query.once("value")
  .then(function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
      const key = Number(childSnapshot.key);
      console.log(key);
      // childData will be the actual contents of the child
      var desp = childSnapshot.child("description").val();
      var img = childSnapshot.child("image").val();

      key % 2 === 0 ?
      $("#product_section").append( //show value from Firebase, image then description '<div class="row">' + '<div class="col-md-6 col-sm-6">' + '<img src="' + img + '">' + '</div>' + '<div class="col-md-6 col-sm-6 productDetails">' + '<p>' + desp + '</p>' + '</div>' + '</div>') : $("#product_section").append(        //show value from Firebase
        '<div class="row">'
          + '<div class="col-md-6 col-sm-6 productDetails">'
              + '<p>' + desp + '</p>'
          + '</div>'
          + '<div class="col-md-6 col-sm-6">'
              + '<img src="' + img + '">'
          + '</div>'
         + '</div>');
  });
});