没有当前用户 - getServerSideProps Next JS 和 AWS Amplify

时间:2021-01-31 05:50:03

标签: reactjs amazon-web-services graphql next.js aws-amplify

我正在尝试使用 AWS Amplify 和 Next JS 在 getServerSideProps 中的服务器端发出一个经过用户身份验证的 GraphQL 请求。

我的 AWS 数据库中的用户只有在他们是文档的所有者时才能访问数据。

我从中得到的错误是“没有当前用户”...(正在登录服务器)。 问题是,我需要 getServerSideProps 中可用的用户,以便我可以进行经过身份验证的请求。

这是我目前拥有的代码

index.tsx:

import Amplify, { API, graphqlOperation, withSSRContext } from "aws-amplify";
import config from "../aws-exports";
Amplify.configure({ ...config, ssr: true });

function Index({ bankAccounts }: { bankAccounts: BankAccount[] }) {

  return (
    ...stuff...
  );
}

index.tsx (getServerSideProps):

export const getServerSideProps: GetServerSideProps = async (context) => {
  const { API } = withSSRContext(context);

  const result = (await API.graphql({
    query: listBankAccounts,
  })) as {
    data: ListBankAccountsQuery;
    errors: any[];
  };

  if (!result.errors) {
    return {
      props: {
        bankAccounts: result.data.listBankAccounts.items,
      },
    };
  }

  return {
    props: {
      bankAccounts: [],
    },
  };
};

如果您能提供任何帮助或建议,我将不胜感激!

1 个答案:

答案 0 :(得分:2)

看起来您可能只需要在 authMode 调用中传入 API.graphql

SSR Support for AWS Amplify 博文中,在标题为在 getServerSideProps 中发出经过身份验证的 API 请求的部分内,您将看到如下所示的代码示例(注意添加了 {{ 1}} 下面,我在上面的代码示例中没有看到):

authMode