【问题标题】:getstaticprops cannot use params from getstaticpaths in case of dynamic routing? MongoDB在动态路由的情况下,getstaticprops 不能使用 getstaticpaths 中的参数? MongoDB
【发布时间】:2021-05-22 02:21:33
【问题描述】:

我正在制作一个网页,该网页从 mongoDB(atlas BASIC 免费计划)中获取数据,并具有带有 SSG 的动态路由页面。动态路由页面 [cogid].js 具有 getstaticpaths 和 getstaticprops。 getstaticpaths 似乎有效,但 getstaticprops 无效。我猜问题出在 getstaticprops 中的变量“params.cogid”...

import { MongoClient } from "mongodb";
const { MONGODB_URI, MONGODB_DB } = process.env;

export default function Cog({ cogData }) {
  return (
      <div className="container mx-auto px-2 my-5 flex flex-col ">
          <p>COG ID: COG{cogData.cog_id}</p>
          <p>name: {cogData.name}</p>
      </div>
  );
}

export async function getStaticPaths() {
  const client = new MongoClient(MONGODB_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  });
  if (!client.isConnected()) await client.connect();
  const res = await client
    .db(MONGODB_DB)
    .collection("test1")
    .find({})
    .project({ cog_id: 1, _id: 0 })
    .toArray();

  if (client.isConnected()) client.close();

  const paths = res.map((copiedCog) => ({
    params: { cogid: copiedCog.cog_id },
  }));
  return { paths, fallback: false };
}

export async function getStaticProps({ params }) {
  const client = new MongoClient(MONGODB_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  });

  if (!client.isConnected()) await client.connect();
  const resp = await client
    .db(MONGODB_DB)
    .collection("test1")
    .findOne({ cog_id: params.cogid });
  if (client.isConnected()) client.close();

  const cogData = await JSON.parse(JSON.stringify(resp));
  return { props: { cogData } };
}

【问题讨论】:

    标签: mongodb parameters next.js getstaticprops getstaticpaths


    【解决方案1】:

    我解决了这个问题。 我应该将 params.cogid 的数据类型更改为 Integer(来自 String?),例如 Number(params.cogid) 或 parseInt(params.cogid)。这是因为DB的“cog_id”字段的类型是Integer。

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2021-09-19
      • 2021-07-10
      • 2017-12-11
      • 2021-08-06
      • 2021-11-25
      相关资源
      最近更新 更多