自定义标签示例:
const Post = {
fields: {
title: { type: Text },
// other fields
},
labelResolver: item => item.title,
};
使用更多逻辑:
const Post = {
fields: {
title: { type: Text },
status: {
type: Select,
defaultValue: 'draft',
options: [
{ label: 'Draft', value: 'draft' },
{ label: 'Published', value: 'published' },
],
},
// and the rest of the fields too
},
labelResolver: item => `${item.status === 'draft' ? 'DRAFT - ' : ''}` + item.title,
};
使用查询结果:
const Post = {
fields: {
author: {
type: AuthedRelationship,
ref: 'User',
isRequired: true,
},
// and the rest of the fields too
},
labelResolver: async item => {
const { data } = await keystone.executeGraphQL({
query: `query {
User(where: {id: "${item.author}" }) {
name
}
}`,
});
return `${item.status === 'draft' ? 'DRAFT ' : ''}` + item.title + ` (${data.User.name})`;
},
};
详情来自keystoneJs的博客:
Using customized label