Как выполнить цикл через дочерние узлы под ключевой базой при условии

#javascript #firebase-realtime-database

# #javascript #firebase-realtime-database

Вопрос:

У меня есть структура базы данных firebase ниже, и я столкнулся с некоторыми трудностями при доступе к значениям в базе дочерних узлов при условиях. ниже приведен мой код и структура БД, в которой многие cartId принадлежат a userid .

 
    MasterCart
      |
      |-- AdminCart
            |
            |- CurrentDate (in string)
                 |
                 |-cartId(1)           
                 |   |
                 |   |- userId(1)      
                 |   |   |
                 |   |   |- username
                 |   |   |- paymentId
                 |   |   |- total
                 |   |   |
                 |   |   |- cartItems     
                 |   |       |
                 |   |       |-ProductId(1)
                 |   |       |  |
                 |   |       |  |- productname
                 |   |       |  |- productPrice
                 |   |       |  |- quantity
                 |   |       |  |- productDescription
                 |   |       |
                 |   |       |-productId(2)
                 |   |
                 |   |- userId(2)
                 |   | ....
                 |
                 |
                 |-cartId(2)
                      |
                      |-userId(2.1)
                          |
                          |....

 

проблемы:

  1. Как получить доступ к значениям, cartItems если выполнены следующие условия:

если paymentId не пусто

Как с этим справиться :

как получить и перебирать заголовки в виде этих данных Json.

это мой код:

  var Root = firebase.database().ref();
 const cartRef = Root.child('MasterCart').child('AdminCart').child('2020-11-19')

 cartRef.once('value',function(snapshot){
     
      if (snapshot.exists()) {

           snapshot.forEach(function(spshot2) {   
   
                 var val = data.val();
                 var payId = val.paymentId;
                 var  ttl = val.total;

                 if(payId) {

                  // how to get and loop thru cartItems

                       .......  

                     content  = '<tr>';
                     content  = '<td>'   productname   '</td>';
                     content  = '<td>'   productprice    '</td>';
                     content  = '<td>'   quantity   '</td>';
                     content  = '</tr>';

                     });

                     $('#ex-table').append(content);
                 }
          });

       }

  });


 

Ответ №1:

Как насчет следующего:

 // for brevity rest of your code is avoided here

if(payId) {
    cartRef.child('cartItems').once('value', snapshot3 => {
        // omitting existence check for brevity
        snapshot3.forEach(cartItem => {
            const cartItemVal = cartItem.val();
            // now add this item to your DOM
        });
    });
}
// rest of your code
 

Комментарии:

1. Есть ли какие-либо ошибки? Существует ли моментальный снимок (т. Е. snapshot3)?