node.js - NextJs api在第一次加载时路由空响应
问题描述
美好的一天,我正在使用 NextJs 处理一个从 Google 表格获取数据的简单页面。
路线第一次加载数据是空的(sheetsValue),但如果我再次刷新/加载数据就在那里。(我使用邮递员和浏览器进行测试)
我做错了什么?
如果我在节点项目中使用相同的代码,使用 express 首次加载时加载数据。
我将下一个 api/sheets.js 与此代码一起使用:
const { google } = require("googleapis");
const sheets = google.sheets("v4");
const sheetValues = [];
export default async function handler(req, res) {
if (req.method === "GET") {
console.log("GET METHOD")
sheetValues
? res.status(200).json(sheetValues)
: res.json({ data: "Something failed" });
}
}
async function main() {
const authClient = await authorize();
const request = await {
spreadsheetId: process.env.NEXT_PUBLIC_SHEET_ID,
range: "A2:N",
valueRenderOption: "FORMATTED_VALUE",
dateTimeRenderOption: "FORMATTED_STRING",
auth: authClient,
};
try {
const response = (await sheets.spreadsheets.values.get(request)).data;
const allData = await response.values;
allData.forEach((value, index) => {
const item = {};
item.name = value[0];
item.description = value[1];
sheetValues.push(item);
});
} catch (err) {
console.error(err);
}
}
main();
async function authorize() {
let authClient = await process.env.NEXT_PUBLIC_GOOGLE_KEY;
if (authClient == null) {
throw Error("authentication failed");
}
return authClient;
}
解决方案
推荐阅读
- c++ - #include 找不到文件,而 Visual Studio 自动完成建议可以找到文件
- raspberry-pi3 - NodeRed - 启动时报告空间不足
- mysql - 检查两个用户是否在同一个聊天中
- marklogic - 如何调用自定义搜索 REST API MarkLogic 数据中心 5
- magento2 - Magento 2 - 类别列表按位置排序,子类别不起作用
- azure - 如何使用 Rest API 成功启用 Windows 虚拟机的诊断设置?
- php - 如何阻止 htmlPurifier 自动解码 html 实体?
- reactjs - Moving placeholder text in Autocomplete component in React
- xamarin.forms - Xamarin Forms: Issue with MediaElement audio playing
- javascript - How to fetch selected option in javascript for more than one dropdowns