尝试从firebase检索时遇到了一些麻烦。这是我的firebase结构:
我试图做的是首先,我想在第一张图片中获取receiptItemID的列表。然后,在我获得ID后,对于每个ID,我想获得其数量和类型。之后,我将它们存储到数组中并执行一些排序。
这是我的代码:
var query = firebase.database().ref('');
query.once( 'value', data => {
data.forEach(subtypeSnapshot => {
var itemKey = subtypeSnapshot.key;
var query = firebase.database().ref('').child(itemKey);
});
});
});
我设法获得了itemKey。但是,当我试图通过console.log
那个部分获取每个receiptItem的细节时,它会打印出两个未定义的内容。关于如何检索数据的任何想法?
答案 0 :(得分:1)
你不需要forEach循环,它太深了一层。相反,直接使用'data'参数。这个新的回调应该有效:
var itemDetail = data.val();
var subtype = itemDetail.type;
var quantity = itemDetail.quantity;
console.log(subtype + ' ' + quantity);
在示例代码的forEach的第一次迭代中,itemDetail将等于“Farmland”而不是整个对象;因此,子类型和数量为空。在新的回调中,itemDetail将等于整个对象,因此可以成功声明子类型和数量。
答案 1 :(得分:1)
var query = firebase.database().ref('receiptItems').child(itemKey);
query.once( 'value', data => {
var itemDetail = data.val();
var subtype = data.type;
// you may try data.toJSON().type as well
var quantity = data.quantity;
// try data.toJSON().quantity
console.log(subtype + ' ' + quantity);
});
在第二次检索中,您已经可以访问receiptItems / itemKey。这是receiptItems中的特定条目,而不是整个receiptItems数组。
因为只有一条记录,所以不需要再次应用data.forEach()。我们应用data.forEach()来获取记录/对象数组。在你的情况下,它只是一个条目。