[英]How to get multiple Doc objects in Firebase 9 in React? and get multiple docs from firestore using its doc id?
在 React 中如何通过 ID 查找文档?
我试图在 Firestore 中获取我的集合中的每个文档特定 ID,但我找不到方法来访问集合中的属性,以便正确呈现我的组件
[ItemDetailContainer.js]
import React, { useState, useEffect } from "react";
import { useParams } from "react-router-dom";
import ItemDetail from "../ItemDetail/ItemDetail";
import { PRODUCTS } from "../ItemListContainer/Products";
import Spinner from "../ItemListContainer/Spinner";
import firebase, { db } from "../../index";
import { getDoc, doc, addDoc } from "firebase/firestore";
const ItemDetailContainer = () => {
const [jackets, setJackets] = useState([]);
const [producto, setProducto] = useState({});
const { id } = useParams();
useEffect(() => {
const singleItem = doc(db, "Products", "YPQGY4euFdaUcCoDm06C");
getDoc(singleItem).then((rta) => {
console.log(rta.data());
console.log(rta.id);
setProducto({ ...rta.data(), id: rta.id });
});
}, []);
console.log(producto);
return (
<>
<div>
{producto.id ? (
<>
<ItemDetail producto={producto} />
</>
) : (
<div>
<Spinner />
</div>
)}
</div>
</>
);
};
export default ItemDetailContainer;
您可以在查询中使用in
运算符,该查询将同一字段上最多 10 个相等 ( ==
) 子句与逻辑OR组合在一起,然后使用getDocs()
获取所有匹配的文档:
import { query, where, collection, documentId } from "firebase/firestore";
const colRef = collection(db, "Products");
const q = query(colRef, where(documentId(), 'in', ['docId1', 'docId2']));
getDocs(q).then((snap) => {
console.log(snap.docs.map(d => ({ id: d.id, ...d.data() }))
})
如果您有超过 10 个 ID 的数组,那么您可以单独查询文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.