这有效
const itemsParent = document.querySelector('.items');
let items = [];
const renderItems = items => {
items.forEach(item => {
const div = document.createElement('div');
div.className = 'item';
div.innerHTML = `
<img class="itemImgBackground" src="assets/${item.name.replace(" ", "")}.png">
<img class="itemImg" src="assets/${item.name.replace(" ", "")}.png">
<span class="itemName"><a href="item.html?id=${item.id}">${item.name}</a></span>
<span class="itemCondition">${item.condition}</span>
<span class="itemPrice">${item.price}</span>
`;
itemsParent.appendChild(div);
});
}
db.collection('items').get().then((querySnapshot) => {
console.log(typeof(querySnapshot));
querySnapshot.forEach(doc => {
docData = doc.data();
docData['id'] = doc['id'];
items.push(docData);
});
console.log(items);
renderItems(items);
});
但这不是
const itemParent = document.querySelector('.item_full');
let params = new URLSearchParams(location.search);
var itemID = params.get('id');
var docRef = db.collection('items').doc(itemID);
docRef.get().then(doc => {
doc.forEach(field => {
console.log(field);
})
}).catch(function(error) {
console.log("Error getting document:", error);
});
它们都是对象,所以没有意义。
答案 0 :(得分:1)
您只能在实现Javascript iteration protocol的数组和某些类似数组的对象上使用R
。
.forEach()
返回的对象是文档的集合,因此它实现了迭代协议。
db.collection().get()
返回的对象只是一个文档。无需迭代单个项目,因此它不会实现此协议。只需直接访问属性即可。
db.collection().get().doc()