2017-12-05 5 views
0

私は基本的な電子商取引のWebプラットフォームを使っているので、ユーザーは製品を購入できますし、他のページでは自分の製品リストと注文を表示したいつまり、1つ以上の商品で1つ以上の注文を行うことができます。Firebase Web Appをサブテーブル化して表を作成する方法

UIDは電子メールです。 これは私のデータ構造

{ 
    "Orders" : { 
    "-L-Nor4Ld1NNORxNToPI" : { 
     "order" : [ { 
     "cant" : "1", 
     "product_id" : "1" 
     }, { 
     "cant" : "2", 
     "product_id" : "5" 
     }, { 
     "cant" : "3", 
     "product_id" : "8" 
     } ], 
     "status" : "pendiente", 
     "total" : 795, 
     "user_id" : "[email protected]" 
    }, 
    "-L-UU03CNGSPd8o0UCHn" : { 
     "order" : [ { 
     "cant" : "2", 
     "product_id" : "2" 
     }, { 
     "cant" : "1", 
     "product_id" : "7" 
     } ], 
     "status" : "pendiente", 
     "total" : 280, 
     "user_id" : "[email protected]" 
    }, 
    "any" : { 
     "order" : { 
     "product1" : { 
      "cant" : 1, 
      "product_id" : 1 
     }, 
     "product2" : { 
      "cant" : 1, 
      "product_id" : 1 
     } 
     }, 
     "status" : "delivered", 
     "total" : 100.01, 
     "user_id" : "[email protected]" 
    } 
    }, 
    "Productos" : { 
    "-L-JT-TaL5ctRQ-8u8NR" : { 
     "price" : 35, 
     "product_id" : 1, 
     "product_name" : "Serie 100 luces (foco)", 
     "stock" : 20 
    }, 
    "-L-JTIcZ69uFkdUQbs8X" : { 
     "price" : 75, 
     "product_id" : 2, 
     "product_name" : "Serie 100 luces (LED)", 
     "stock" : 10 
    }, 
    "-L-JTTi8VcLxkgT3RNuA" : { 
     "price" : 70, 
     "product_id" : 3, 
     "product_name" : "Serie 140 luces musical (foco)", 
     "stock" : 10 
    }, 
    "-L-JTb0PwTyS8TiWS5W9" : { 
     "price" : 96, 
     "product_id" : 4, 
     "product_name" : "Serie 140 luces musical (LED)", 
     "stock" : 10 
    }, 
    "-L-JUm5tF8fYBmR3BZCU" : { 
     "price" : 110, 
     "product_id" : 5, 
     "product_name" : "Serie 300 luces color", 
     "stock" : 10 
    }, 
    "-L-JUzclafELx1xjpuQx" : { 
     "price" : 135, 
     "product_id" : 6, 
     "product_name" : "Serie 300 luces blanca", 
     "stock" : 10 
    }, 
    "-L-JVB8diTZMmVS3ay1u" : { 
     "price" : 130, 
     "product_id" : 7, 
     "product_name" : "Cascada 400 Luces", 
     "stock" : 10 
    }, 
    "-L-JVIgENEJRdcfLfKWT" : { 
     "price" : 180, 
     "product_id" : 8, 
     "product_name" : "Manguera gel 10 metros", 
     "stock" : 10 
    } 
    } 
} 

であり、あなたはちょうどあなたがあなたの順序を作った後、あなたがこのリンクOrder review Page に行くことができ、あなたが表示されるはずです Go To Project このリンクは、Googleでログイン自分でプロジェクトを見ることができますあなたのために、それdoesntのが起こる、私はその後、注文(ORDER_ID)をuser_idの取得この

取得ログインuser_idのような何かをしたいいただきました!(あれば)、その後、

で複数のテーブルを内示し、

とその製品

あなたは

ref.orderBy(X).equalTo(uid).on("child_added",function(data){ 
    ref.orderBy(Y).equalTo(item).on("child_added",function(data2){ 
     //dothings create table content 
    }) 
    //close table content 
}) 
//embed table content created. 

を使用してcart.htmlイムのコードで見ることができるように、私はテーブルを表示したいが、.then()機能doesntの仕事と同じ.done()、私はあなたがテーブル内でユーザの注文を得るためにどのようにサブクエリするべきかを理解するのを助けてくれることを願っています

+0

あなたはこのコードが何を期待していますか? –

答えて

0

私の解決策は内部のファイヤーベース関数によって値を取得することではなく、

次のコードは、productsObjとordersObjがfirebaseデータベース製品と注文の結果オブジェクトであるとします。 私は次のことは、この関数でテーブルを動的に作成することでした。 あなたがonようfirebase機能上のそのようなサブクエリか何かを作成することはできませんchild_addedchild_removed、など。

function productList(){ 

    if(ordersObj.length != 0 & productsObj.length == 8){ 
     //console.log("si termino");  
     $.each(ordersObj,function(index, data){ 
      var table =('<table class="table table-hover table-bordered">'); 
      var tableHead = ("<thead class='thead-dark'><tr><th>Producto</th><th>Precio</th><th>Cantidad</th><th>Importe</th></thead>"); 
      table+=tableHead; 
      //console.log(table); 
      var tableBody = (""); 
      //console.log(tableBody) 
      var total = 0; 
      $.each(data.order,function(idx, ord){ 
       console.log(ord.product_id); 
       //console.log("precio:"+productsObj[ord.product_id-1].price); 
       var subtotal = ord.cant*productsObj[ord.product_id-1].price; 
       //console.log("despues del subtotal") 
       var row = ('<tr><td>'+productsObj[ord.product_id-1].product_name+'</td><td>'+productsObj[ord.product_id-1].price+'</td>'+'<td>'+ord.cant+'</td>'+'<td>'+subtotal+'</td></tr>'); 
       //console.log(row); 
       total=data.total; 
       tableBody+=(row); 
      }); 
       //console.log(tableBody.html()); 
       //console.log(tableHead.html()); 
      tableBody+=("<tr><td colspan='2'>Total</td><td colspan='2'>"+total+"</td></tr><tbody></table>"); 
      table+=tableBody; 
      //console.log(table); 
      //table.append(tableHead.html()); 
      $('#content').append(table); 
      $('#content').append("<br>"); 
     }); 




    } 
    else{ 
     //productList(); 
    } 

} 
関連する問題