gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:10:47 25 4
gpt4 key购买 nike

我正在尝试使用 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: [],
},
};
};

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

最佳答案

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

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

  const { API } = withSSRContext(context)
let movieData
try {
movieData = await API.graphql({
query: listMovies,
authMode: "AMAZON_COGNITO_USER_POOLS"
});
console.log('movieData: ', movieData)
} catch (err) {
console.log("error fetching movies: ", err)
}
return {
props: {
movies: movieData ? movieData.data.listMovies.items : null
}
}
}```

关于reactjs - 没有当前用户 - getServerSideProps Next JS 和 AWS Amplify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65976157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com