这将很难为我解释,所以我希望你能理解。事先谢谢你努力理解我的目标。
我对Firestore完全陌生,我已经坐了几个小时,阅读了这些文档,而这些文档最终都不起作用。最后,我在YouTube上找到了一段视频,它让我走上了正确的道路。
简单地说,我正在创建一个webshop,它包含我想要存储在一个消防站数据库中的x个产品数量,比如价格,sku,以及一个标识符,如果我想读取数据,可以轻松地找到正确的产品。
我的目标是能够简单地从我的HTML文件中运行一个函数,比如getData( price able );它将运行这个函数,用sku查找产品的价格。(我没有这方面的经验,所以我在这方面可能会偏离我的目标)
我的当前代码如下:
async function getData(data) {
const q = query(collection(db, 'products'));
const qsnap = await getDocs(q);
qsnap.forEach((doc) => {
console.log(doc.id, " => ", doc.data() + `.` + data);
});
}
getData(price);你也许能看到我想在这里做什么。我在运行getData(Price)时添加了"price“;我希望它只将.price添加到doc.data().price的末尾,但这是行不通的。我也不知道如何让它为每种产品查找SKU。
控制台只返回x产品=> object Object.price,如果我从代码中删除+ `.` + data,它就会像在不寻找特定属性时一样返回{sku: 'd80cb795', id: 'd80cb795-945d-4f3f-a875-c04a380bb59a', price: 250}。
在未来,我还想实现一个购物车系统,它使用SKU添加到一个购物车,但这对我来说太先进了,我可能永远也达不到。我只是希望这些信息足以让我的目标变得可以理解。我想学习怎么做。基本上没有关于这个特定事物的文档。
所以如果你可以的话,请不要用勺子喂我,如果我打错了,请给我批评。它帮助我学习。
发布于 2021-10-27 18:22:43
我可以看到你正在尝试从一个集合把所有的文件 (‘产品’)。如果您想要通过SKU搜索它们,您需要首先使用它,这可以通过从扫描器获得,或者从以前使用产品id的查询中获得,在这种情况下,我只需要使用产品ID来进行查询,但这取决于您。这就是如何将从集合中获取多个文档应用于您的具体情况:
async function getData(inputSKU) {
const q = query(collection(db, 'products'), where("sku", "==", inputSKU));
const qsnap = await getDocs(q);
qsnap.forEach((doc) => {
console.log(doc.id, "=>", doc.data())
});
}
getData(inputSKU);如果您只想获得一个具有唯一id/SKU的文档,或者您只想在每个产品上使用获得一份文件,那么最好的选择是如下所示:
const docRef = doc(db, 'products', 'inputSKU');
const docSnap = await getDoc(docRef);
// and optionally...
if (docSnap.exists()) {
console.log("Product data:", docSnap.data());
} else {
// doc.data() will be undefined in this case
console.log("No such product");
}当您添加+ '.' + data时,将其作为价格参数添加是没有意义的,如果您想将数据添加到文档中,或者换句话说,在不覆盖整个文档的情况下添加更新文件,请使用update()方法:
const productRef = doc() const productRef = doc(db, "product", inputSKU);
// Set the "price" to the amount you want
await updateDoc(productRef, {
price: anyPrice
});您可以在一个单独的函数中使用它,或者将它添加到用于查询产品的函数中。
将来,如果您想要创建一个购物车,那么创建一个文档或集合就很简单了,这取决于您选择的结构和您想要购买的所有产品id/sku,就像您以前创建的产品集合一样。
https://stackoverflow.com/questions/69713368
复制相似问题