Gridsome源文件系统添加标签描述

问题描述

我在此配置中使用@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馆藏?

或者以其他任何方式(例如,对于Tags不使用@gridsome/source-filesystem,将description添加node中存在的collection上吗?

解决方法

如果您只想添加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;
            }
          }
        }
      }
    });
  });
};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...