首页 > 解决方案 > Cloud firestore 和 nextjs - getInitialProps 和异步数据

问题描述

我试图使用 nextjs 的 getInitialProps 方法检索文档。然而,它返回一个状态为“待定”的 Promise。这是我的代码:

  static async getInitialProps(context) {
    const { id } = context.query;

    await db
      .collection('clients')
      .doc('JJqyDI8a1ILqnqmp2gcO')
      .get()
      .then(doc => ({
        data: doc.data(),
      }));

    console.log(data); // logs pending

    return {
      client: data,
    };
  }

我似乎也找不到任何例子。

标签: async-awaitgoogle-cloud-firestorenext.js

解决方案


所有异步函数都返回一个承诺。

我看不到您是如何访问的data,因为当您使用 console.log 时,它已经超出了范围。

做这样的事情:

  static async getInitialProps(context) {
    const { id } = context.query;

    const data = await db
      .collection('clients')
      .doc('JJqyDI8a1ILqnqmp2gcO')
      .get()
      .then(doc => ({
        ...doc.data(),
      }));


    return {
      client: data,
    };
  }

这应该可以通过props.client


推荐阅读