【问题标题】:How to retrieve Firebase data using firebaseServer?如何使用 firebaseServer 检索 Firebase 数据?
【发布时间】:2019-07-14 00:24:42
【问题描述】:

我使用Next.js' starter 创建了一个带有 Firebase 身份验证的应用,并设置了 Firebase 身份验证和数据库。我可以很好地运行应用程序(登录并添加消息)。

然后我注意到它不是对 Firebase 数据进行 SSR:

export default class Index extends Component {
  static async getInitialProps({ req, query }) {
    const user = req && req.session ? req.session.decodedToken : null;
    // don't fetch anything from firebase if the user is not found
    // const snap = user && await req.firebaseServer.database().ref('messages').once('value')
    // const messages = snap && snap.val()
    const messages = null;
    return { user, messages };
  }

我取消了代码的注释以查看是否可以对所有内容进行 SSR:

export default class Index extends Component {
  static async getInitialProps({ req, query }) {
    const user = req && req.session ? req.session.decodedToken : null;
    // don't fetch anything from firebase if the user is not found
    const snap =
      user &&
      (await req.firebaseServer
        .database()
        .ref("messages")
        .once("value"));
    const messages = snap && snap.val();
    // const messages = null;
    return { user, messages };
  }

user 和 snap 有值,但 snap.val() 为空。

如何通过 firebaseServer 检索消息?

如果有任何帮助,here's the whole file。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database firebase-authentication next.js


    【解决方案1】:

    firebaseServer.database() === 实时数据库

    添加到 Cloud Firestore 而非实时数据库的文档。

    这会从 Cloud Firestore 中提取文档:

      static async getInitialProps({ req, query }) {
        const user = req && req.session ? req.session.decodedToken : null;
        const snap =
          user &&
          (await req.firebaseServer
            .firestore()
            .collection("messages")
            .get());
    
        const messages = snap && snap.docs.map(d => d.data());
        return { user, messages };
      }
    

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多