我来自SQL背景,最近开始使用Firebase构建离子购物车。这是数据库架构:
要检索用户的购物车,我使用了以下
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;
答案 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)
});
});
});
希望它有所帮助;)