javascript 仅包含数组中一个字段的Firestore查询

m1m5dgzv  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(137)

这是我想要完成的事情:我正在构建一个网上商店。网上商店有一个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。

bsxbgnwa

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"),您将直接查询文档,并且只返回对该文档的引用,不需要额外的字段,也不需要从结果集中提取单个文档。

相关问题