如何使用 Next.JS 中的 getServerSideProps 从 stripe api 获取用户数据?

问题描述 投票:0回答:2

我正在尝试从 Next.JS 中的

getServerSideProps
函数中的条带获取一些用户数据,以便我可以将其传递给其他一些组件,但我很难从
getServerSideProps
函数中获取数据。

以下是我的

getServerSideProps
功能:

export const getServerSideProps = withPageAuthRequired({

  async getServerSideProps(context) {
    const user = getSession(context.req, context.res).user

    const resources = await table.select({}).all()
    const customer = await fetch(`/api/customers`).then(res => res.json()).then(data => {
      data.data.find(user_data => user_data.metadata['auth0_user_id'] === user.sub);})

    const subscriber_status = await customer.metadata['subscription_status'] === 'true';


    return {
      props: {
        tech_resources: minifyRecords(resources),
        subscriber_stats: subscriber_status, // I want to return the subscriber status so that I can pass it to another component later on
      }
    }
  }

});

下面是我原来的

fetch
请求,如果我将其用作独立函数或与 useEffect 挂钩一起使用,它会获取我正在查找的数据。

fetch(`/api/customers`).then(res => res.json()).then(data => {
            const customer = data.data.find(user_data => user_data.metadata['auth0_user_id'] === user.sub);
            if (customer.metadata['subscription_status'] === 'true') {
                // Do Something;}}

但是,当我在

getServerSideProps
内部尝试时,它似乎不起作用。谁能帮我解决这个问题吗?

javascript next.js stripe-payments auth0
2个回答
0
投票

等待获取然后使用承诺对我来说看起来很奇怪。 当你使用await时,你的结果将是响应。

所以也许可以尝试一下

const response = await fetch(`/api/customers`);
const data = await response.json();

0
投票

道具:{ tech_resources:minifyRecords(资源), subscriber_stats:JSON.parse(JSON.stringify(subscriber_status)), }

© www.soinside.com 2019 - 2024. All rights reserved.