В настоящее время я пытаюсь извлечь некоторые данные из API и добавить их в GraphQL, используя API-интерфейсы sourceNode и createNode, например:
exports.sourceNodes = async ({ actions, createNodeId, createContentDigest }) => {
const modules = ['data', 'stuff', 'bananas'];
const modulesResponse = Promise.all(modules.map(async (module) => getModuleData(module)));
const modulesData = await modulesResponse;
const content = Object.fromEntries(modules.map((entries, index) => [entries, modulesData[index]]));
actions.createNode({
id: createNodeId(modules.join(',')),
parent: null,
children: [],
content,
internal: {
type: 'myData',
mediaType: 'text/html',
contentDigest: createContentDigest(content)
}
});
Когда я пытаюсь отфильтровать это (используя GraphiQL) с аргументами, это не кажется, что работает:
{
myData(content: {data: {elemMatch: {filterEntry: {eq: "foo"}}}}) {
content {
data {
filterEntry
}
}
}
}
Это приводит к этому:
{
"data": {
"myData": {
"content": {
"data": [
{
"filterEntry": "foo"
},
{
"filterEntry": "bar"
},
{
"filterEntry": "baz"
}
]
}
}
}
}