0

我正在使用@gridsome/source-filesystem这个配置:

{
  use: '@gridsome/source-filesystem',
  options: {
    typeName: 'Post',
    path: 'content/posts/**/*.md',
    refs: {
      tags: {
        typeName: 'Tag',
        create: true
      },
      author: {
        typeName: 'Author',
        create: true
      }
    }
  },
}

现在我只想添加description 一个标签,所以我在以下位置创建了一个新文档content/posts/my-tag.md

---
title: Tag-Title
description:tag description
---

如何将此文档连接到allTags集合?

或任何其他方式(例如,没有@gridsome/source-filesystemfor Tags)添加description到存在nodecollection?

4

1 回答 1

1

如果您只想添加allTags,则可以为其创建降价。

gridsome.config.js

...
    {
      use: '@gridsome/source-filesystem',
      options: {
        path: 'content/tags/**/*.md',
        typeName: 'Tag'
      },
    }
...

添加文件content/tags/my-tag.md

---
title: Tag-Title
description: tag description
---

你可以探索

{
  allTag {
    edges {
      node {
        id
        title
        description
      }
    }
  }
}
{
  "data": {
    "allTag": {
      "edges": [
        {
          "node": {
            "id": "******", // random hash
            "title": "Tag-Title",
            "description": "tag description"
          }
        },
        {
          "node": {
            "id": "foo",
            "title": "foo",
            "description": ""
          }
        },
...

但是,这无法连接到您的Post.

或者只是添加描述Tag,您可以使用addSchemaResolvers. 在gridsome.server.js

module.exports = function(api) {
  api.loadSource(async ({ addSchemaResolvers }) => {
    addSchemaResolvers({
      Tag: {
        description: {
          type: "String",
          resolve(obj) {
            if (!obj.description) {
              // coding your logic
              return "set description";
            } else {
              return obj.description;
            }
          }
        }
      }
    });
  });
};
于 2020-08-14T13:39:18.990 回答