使用Next js获取时,单个Firestore文档被多次调用

fbcarpbf  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(97)

在我的Next js 13中,我获取了一个带有id的文档,但是当我发出请求时,读取的文档不是1(因为它应该是,因为我只获取了一个文档),而是多个(它依赖于b/n 2 -未知例如:我最近得到了每个单文档8次读取)。我是按照消防基地的准则去找医生。
我创建了一个lib文件夹,并在其中创建了一个getter文件来获取数据。

import { doc, getDoc } from "firebase/firestore/lite";
import { db } from "../firebase";

export default async function getVehicle(vehicleid) {
  const docRef = doc(db, "vehiclePosts", vehicleid);
  const docSnap = await getDoc(docRef);

  if (docSnap.exists()) {
    console.log("Document data exists:");
    return docSnap.data();
  } else {
    console.log("Document data doesn't exists:");
  }
}

对于上面的代码,控制台会多次提示。也许就在这里
在我的详细信息页面我称之为

async function VehicleGroup({ vehicleid }) {
  const vehicleData = getVehicle(vehicleid);
  const [vehicle] = await Promise.all([vehicleData]);

  return (
    // the code
  );
}

export default VehicleGroup;

我还调用它来获取元数据

export async function generateMetadata({ params: { vehicleid } }) {

  const vehicleData = getVehicle(vehicleid);
  const [vehicle] = await Promise.all([vehicleData]);

  return {
    title: {vehicle.title},
    description: {vehicle.description}
    robots: {
      index: true,
      follow: true,
      nocache: false,
      googleBot: {
        index: true,
        follow: true,
        noimageindex: false,
      },
    },
  };
}

我做得不对吗?为什么firebase会认为我会多次调用它?

klh5stk1

klh5stk11#

张贴我以前的评论作为更好的可见性的答案。
读取1个文档不等于读取1个文档。正如here所回答的,在获取文档期间发生了几次收费读取(例如获取集合列表、读取文档ID、读取所选文档的数据等)。
对于多次提示的控制台日志。您应该检查是否不必要地调用了getVehicle()。有关webpack的问题,请查看清除webpack缓存文件是否可以解决问题。希望有帮助

相关问题