为GatsbyJS创建Firestore插件

时间:2019-12-24 21:12:08

标签: gatsby

我正在尝试为Gatsby创建自己的源代码插件。在这种情况下,我试图创建一个Firestore源插件。我知道已经有用于Firestore的源插件,但是我想学习如何自己创建一个源插件,特别是从数据库中创建源插件(我已经通过gatsby网站上的fetch api source plugin tutorial了) 。

话虽如此,该插件无法正常工作,我不确定是什么问题。我已经完成了console.log,并且知道要为Firestore检索数据。另外,在控制台中执行gastby develop时也没有错误。该网站正常构建-我可以访问graphiql。但是,数据不会显示在graphiql中。

这是插件中的gatsby-node.js文件:

const firebase = require("firebase-admin")
const firebaseCert = require("./firebase-adminsdk.json")

exports.sourceNodes = async ({
  actions,
  createNodeId,
  createContentDigest,
}) => {
  try {
    if (firebase.apps || !firebase.apps.length) {
      firebase.initializeApp({
        credential: firebase.credential.cert(firebaseCert),
      })
    }
  } catch (e) {
    report.warn("Could not initialize Firebase. Please check credentials")
    report.warn(e)
    return
  }

  const { createNode } = actions

  const db = firebase.firestore()

  db.collection("newsFeed")
    .get()
    .then(snapshot => {
      snapshot.docs.forEach(doc => {
        createNode({
          id: createNodeId(`feedly-feed-${doc.id}`),
          parent: null,
          children: [],
          internal: {
            type: `FeedlyFeeds`,
            content: JSON.stringify(doc.data()),
            contentDigest: createContentDigest(JSON.stringify(doc.data())),
          },
        })
      })
    })
}

有人知道为什么它不起作用吗?如何使它起作用?

0 个答案:

没有答案