【发布时间】:2021-11-07 12:40:07
【问题描述】:
项目:
我正在开发一个电子商务应用程序,它有超过 1,600 种产品和 156 个类别 .
问题:
最初,在第一个产品页面上,将提取 30 个产品(由于页面限制),但在左侧边栏上,我需要根据 标签 决定的过滤器所有 1,600 种产品。所以这就是为什么我需要在第一次获取所有产品,然后我将通过循环所有产品来提取常见的标签,并立即将它们显示在侧边栏上。
我想要什么?
我不确定,但我认为如果我生成一个包含所有产品的 JSON 文件 并将其存储在某个地方,我可以使用 REST API 获取只需点击 URL Next JS(在 getServerSideProps 或 getStaticProps 中)。
警告:
我尝试将 JSON 文件存储在下一个 js 应用程序的 ./public 目录中,它在 localhost 中有效,但在 vercel 中无效。
这是我为在 ./public 目录中存储 JSON 文件而编写的代码:
fs.writeFileSync("./public/products.json", JSON.stringify(products, null, 2)); //all 1,600 products
【问题讨论】:
-
我看到了一个 redis 标签,但是你说你要获取的 30 个产品实际上是按堆栈存储的?
-
那你为什么不直接
fetchpublic目录中的文件呢? -
@Nelloverflow 我从每页只提供 30 个产品的后端获取,但是为了获取所有产品,我必须为每个页面使用循环,每个页面包含 30 个产品,因此对于 1600 多个产品我认为我必须使用超过 300 次。示例:&per_page=30&page1
-
@IvanV。在 vercel 无服务器函数中出现错误,并且不推荐从本地文件中获取数据的方法错误:错误:ENOENT:没有这样的文件或目录,打开 './public/products.json'
-
我添加了一个 Redis 标签,因为我对 redis 的唯一了解是,它有助于缓存数据....所以这就是为什么我认为 Redis 可能会为我的问题提供解决方案