Firebase:如何使用标识

时间:2016-06-19 12:13:24

标签: ionic-framework firebase firebase-realtime-database

我来自SQL背景,最近开始使用Firebase构建离子购物车。这是数据库架构:

Shopping Cart Schema

要检索用户的购物车,我使用了以下

    var user_id="user1"; // Temporary initialised

    var refCart = new Firebase("https://testing.firebaseio.com/cart");
    var cart=$firebase(fireBaseData.refCart().child(user_id)).$asArray();

这给出了结果:

item1 1
item2 2
item3 5

尝试使用foreach()

var refMenu = new Firebase("https://testing.firebaseio.com/menu");
refCart.child(user_id).on("value", function(snapshot) {

    snapshot.forEach(function(childSnapshot) {

      var item_id = childSnapshot.name();
      var qty = childSnapshot.val();

      //var data= refMenu.child(item_id).val();  
      // val is not a function

      //var data= refMenu.child(item_id).exportval(); 
      // exportval is not a function

      //var data = $firebase (refMenu.child(item_id)). $asArray(); 
      // Give me an array of objects , ie attributes - OK! But what to do next ?

      //console.log("DATA",data );

      console.log("Item",item_id+" "+qty);

   });

});

如何使用 item_id 检索项目详情

这是从多个表进行数据检索的正确方法吗?

更新

使用on()功能,我设法获得了项目属性。

    refMenu.child(item_id).on("value", function(snapshot) {
      console.log("Price",snapshot.val().price);
    });

但是有没有更好的实现。

是否有更好的方法可以检索(从服务器端)项目的特定属性。 就像在SQL中一样

SELECT name,price, ... from menu;

1 个答案:

答案 0 :(得分:1)

注意:.on('event', callback)方法会在每次触发事件时调用您的回调。

如果您需要从引用中检索一次数据,则应使用:.once('event', callback)

注意2:snapshot.val()将为您提供一个可以分配给变量

的JSON对象

我会这样做:

refCart.child(user_id).on("value", function(snapshot) {

  snapshot.forEach(function(childSnapshot) {
    var item_id = childSnapshot.name();
    var qty = childSnapshot.val();

        refMenu.child(item_id).once("value", function(snapshot) {
          var item = snapshot.val()
          console.log(item.name +' '+ item.price)
        });

 });

});

希望它有所帮助;)