首页 > 解决方案 > 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;
}


标签: node.jsreactjsapiroutesnext.js

解决方案


推荐阅读