getInitialProps()应该解析为一个对象。但是找到了“未定义”

时间:2020-05-23 05:41:44

标签: reactjs firebase next.js

我正在尝试使用getInitialProps从firebase到我的next.js应用程序中获取数据,但数据会显示在VS Code终端中(以及一些错误)。但是,在浏览器中,我收到此消息

getInitialProps() should resolve to an object. But found "undefined" instead

请检查代码

// Other import code
import { firestore } from "../firebase/firebase.utils";

const Hotels = (props) => {
  return (
    // jsx code
  );
};

Hotels.getInitialProps = async (ctx) => {
  let hotelsRef = firestore.collection("hotels");
  let query = hotelsRef
    .get()
    .then((snapshot) => {
      if (snapshot.empty) {
        console.log("No matching documents.");
        return;
      }

      snapshot.forEach((doc) => {
        console.log(doc.id, "=>", doc.data());
        return { props: doc.data() };
      });
    })
    .catch((err) => {
      console.log("Error getting documents", err);
    });
};

export default Hotels;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您应该从getInitialProps的对象返回,但是在您的情况下,您什么也不返回,也没有使用async await

您在这里:

Hotels.getInitialProps = async (ctx) => {
    let hotelsRef = firestore.collection("hotels");
    let snapshot = await hotelsRef.get()
    if (snapshot.empty) {
        console.log("No matching documents.");
        return;
    }
    let data = []
    snapshot.forEach((doc) => {
        console.log(doc.id, "=>", doc.data());
        data.push(doc.data());
    });
    return { props : data };
};