我有一个相当简单的 Gatsby & Netlify CMS 站点。我无法应付使图像可选。在 Netlify CMS 的情况下,它只是设置一个字段的问题required: false。我如何为 Gatsby 编写查询,以便我不会收到错误“GraphQL 错误字段“图像”必须没有选择,因为“字符串”类型没有子字段。当图像实际上是一个空字符串时,因为它在我的应用程序中不是强制性的?有没有办法解决?
GraphQL 查询图像:
image {
childImageSharp {
fluid(maxWidth: 2048)
...GatsbyImageSharpFluid
}
}
}
Run Code Online (Sandbox Code Playgroud) 如何正确地编写以下方法:
const getVars = (vars: string[]) => {
const data = [
{
"someId": "28",
"someAttr": "2",
},
{
"someId": "43",
"someOtherAttr": "3",
},
{
"someOtherId": "32",
"someAttr": "4",
}
] // an array containing some data
const result = vars.reduce((acc, _var) => ({
...acc,
...data.reduce((acc, acc) => ({
...acc,
[...acc[_var], curr[_var]]
}, {})
}), {})
return result
}
Run Code Online (Sandbox Code Playgroud)
用法:
const { someId, someAttr } = getVars(['someId', 'someAttr'])
Run Code Online (Sandbox Code Playgroud)
输出:
someId: ['28', '43'], someAttr: ['2', '4']
我想要打字稿,getVars以便返回类型反映给定的参数,例如,如果我传递 ['someId'] 作为参数,打字稿就会知道该函数返回一个带有键“someId”的对象。
我想减少数组,因此我将其值放在“列”中,其中第一个值位于第一列中,第二个值位于第二列中,依此类推,直到它换行,例如第四个值位于第一列中三列。
>> [1, 2, 3, 4, 5, 6, 7].in_columns(3)
=> [[1, 4, 7], [2, 5], [3, 6]]
Run Code Online (Sandbox Code Playgroud) javascript ×2
arrays ×1
ecmascript-6 ×1
gatsby ×1
gatsby-image ×1
graphql ×1
netlify-cms ×1
typescript ×1