这是我想要完成的事情:我正在构建一个网上商店。网上商店有一个React前端。前端从Firestore中获取5 collections,并在商店页面上显示集合数组中的所有项目。用户在商店页面上选择一个项目。将I send the item fields such as (price, name, quantity, id)添加到我的express server,服务器对项目字段进行 checkout 会话。用户转到Stripe checkout 表单,然后返回到我的前端-当付款完成时由条纹结束。我在我的服务器上侦听该事件,然后当想要更新Firestore中项目的数量字段时。
但是我如何查询Firestore的这个项目?有没有办法查询Firestore只有这个id字段(或名称字段)?一些类似:
db
.collection('collections')
.where('id', '===', 1)
或者我需要将文档ID(集合的)保存为项目Map中的一个字段,并将其发送到Stripe?或者有更好的方法来实现这一点?我在网上找不到任何关于这方面的信息。
Here is a screenshot of Firestore.
请原谅我的初学者问题。我还在学习React,Firestore和Node.js。
1条答案
按热度按时间bsxbgnwa1#
首先,请确保您正确地坚持使用Firestore术语。有
collections
,也有documents
。通过以下路径访问的集合:
collRef = db.collection("products")
collRef = db.collection("products").where("quanity_on_hand", ">", "0")
collRef = db.collection("products").doc("12345").collection("purchase_history")
后一个示例也可以通过
collRef = db.collection("products/12345/purchase_history")
访问。在上述所有情况下,您将获得一个CollectionReference。
您访问的文档,例如:
docRef = db.collection("products").doc("12345")
docRef = db.doc("products/12345")
这将为集合“products”中ID为“12345”的文档返回一个DocumentReference。
因此,对于上面的代码示例,您希望使用
docRef = db.doc("collections/1")
来获取所需项的DocumentReference。(或者,您可以用途:docRef = db.collection("collections").doc("1")
如果您坚持使用上面的代码,您将获得一个CollectionReference,然后您需要使用
.get()
获取数据,然后提取结果文档(这将仅仅是单个文档),然后使用它。哦......您需要在所有文档中放置一个“id”字段,因为文档的ID值(文档的“名称”)在默认情况下不是文档的一部分,因此如果要使用.where("id", "==", "1")
,则需要向文档添加一个“id”字段并正确填充它。如果使用
docRef = db.doc("collections/1")
,您将直接查询文档,并且只返回对该文档的引用,不需要额外的字段,也不需要从结果集中提取单个文档。