问题描述
我在此配置中使用@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;
}
}
}
}
});
});
};