Graphql 使用JSON导入数据时createSchemaCustomization中@link的行为不一致

Graphql 使用JSON导入数据时createSchemaCustomization中@link的行为不一致,graphql,gatsby,Graphql,Gatsby,在我的Gatsby站点上,我有一系列正在解析的JSON文件,因此我可以使用GraphQL查询它们 我已经对数据进行了结构化,因此可以使用@link在文件之间创建外键。在本地运行时,这只是工作和链接几行上的数据,而不是所有行上的数据——尽管键正确 我重新排序了JSON文件,突然所有行都正确地显示了链接的数据——尽管没有数据更改。然而,当我将我的站点部署到Netlify时,问题又回来了,但在不同的数据行上 这是JSON文件的一个示例: // src/data/work.json [{ "tit

在我的Gatsby站点上,我有一系列正在解析的JSON文件,因此我可以使用GraphQL查询它们

我已经对数据进行了结构化,因此可以使用
@link
在文件之间创建外键。在本地运行时,这只是工作和链接几行上的数据,而不是所有行上的数据——尽管键正确

我重新排序了JSON文件,突然所有行都正确地显示了链接的数据——尽管没有数据更改。然而,当我将我的站点部署到Netlify时,问题又回来了,但在不同的数据行上

这是JSON文件的一个示例:

// src/data/work.json

[{
  "title": "This is my project title",
  "category: "website",
  "tags": ["html", "css", "javascript"]
}, {
  "title": "This is another project",
  "category: "app",
  "tags": ["php", "mysql"]
}]
我的
gatsby config.js
文件:

module.exports = {
  plugins: [
    'gatsby-transformer-json',
    {
      resolve: 'gatsby-source-filesystem',
      options: {
        path: './src/data',
        name: 'data',
      },
    },
  ],
};
exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions;

  const typeDefs = `
    type WorkJson implements Node {
      category: CategoriesJson @link
      tags: [TagsJson] @link
    }
  `;

  createTypes(typeDefs);
};
和我的
gatsby node.js
文件:

module.exports = {
  plugins: [
    'gatsby-transformer-json',
    {
      resolve: 'gatsby-source-filesystem',
      options: {
        path: './src/data',
        name: 'data',
      },
    },
  ],
};
exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions;

  const typeDefs = `
    type WorkJson implements Node {
      category: CategoriesJson @link
      tags: [TagsJson] @link
    }
  `;

  createTypes(typeDefs);
};

我一直在关注这个问题,但我无法理解不一致的行为、可能的原因以及如何解决它。

我相信我已经解决了这个问题。这是一个利基的情况,但答案可能有助于未来的人

简而言之,问题是在my.json文件中命名字段
“id”
,因为盖茨比试图自动设置这个值,我只能假设这偶尔会引起问题

通过将我的JSON文件更改为“ID”使用不同的字段名,例如:

然后根据新字段名将我的
gatsby node.js
更新为@link

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions;

  const typeDefs = `
    type WorkJson implements Node {
      category: CategoriesJson @link(by: "key")
      tags: [TagsJson] @link(by: "key")
    }
  `;

  createTypes(typeDefs);
};
然后一切都开始按预期进行

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions;

  const typeDefs = `
    type WorkJson implements Node {
      category: CategoriesJson @link(by: "key")
      tags: [TagsJson] @link(by: "key")
    }
  `;

  createTypes(typeDefs);
};