我正在尝试为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())),
},
})
})
})
}
有人知道为什么它不起作用吗?如何使它起作用?