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