繁体   English   中英

React中如何获取Firebase 9中的多个Doc对象? 并使用其文档 ID 从 firestore 获取多个文档?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM