【发布时间】:2020-04-17 22:49:16
【问题描述】:
我有一个使用 gatsby-source-apiserver 访问的自定义 api 端点。我的数据库中有没有转换为图像节点的图像 - 即允许 childimagesharp
在我的 graphql 中,我有这样的结构:
query MyQuery {
allSubmissions {
edges {
node {
works {
mediaItems {
sourceFilename
}
}
}
}
}
}
sourceFilename 是一个字符串,如“thisisanimage.jpg” - 如果我在其上附加一个 url,如“http://example.com/media”,则图像工作正常。我不确定如何继续,我查看了 createResolvers 但不完全了解如何实现它。
这是我迄今为止尝试过的 - 似乎没有做太多(除了在我的终端中获得“发生任何事情”的评论,但不是下一个......
exports.createResolvers = ({
actions,
cache,
createNodeId,
createResolvers,
store,
reporter,
}) => {
const { createNode } = actions
reporter.info(anything happening?)
createResolvers({
submissions: {
works: {
mediaItems: {
type: File,
resolve(sourceFilename, args, context, info) {
reporter.info(
Resolving source: ${sourceFilename} ${args} ${context} ${info}
)
return createRemoteFileNode({
url:
"https://example.com/media/" +
sourceFilename.sourceFilename,
store,
cache,
createNode,
createNodeId,
reporter,
})
},
},
},
},
})
}
可能很重要的一点是,works 是一个 mediaItems 数组,它本身就是一个字段数组,其中 sourceFilename 就是其中之一。见附件截图
【问题讨论】:
-
所以我现在已经开始工作了媒体文件的正确名称,我在 CLI 中使用“gatsby repl”然后是“schema”。这使您能够为您的媒体字段找到正确的名称。然后替换下面示例中的“CMS_Asset”:gatsbyjs.org/docs/schema-customization/… 也包括在 gatsby-node.js 中: const { createRemoteFileNode } = require("gatsby-source-filesystem")
-
您想在此处添加您的完整解决方案作为答案吗?
-
是的,我会这样做的——我还在改变事情的最后一个答案——从那以后得到了更多的反馈
标签: gatsby gatsby-image