我尝试使用PayloadCMS GraphQL插件,但是无论我怎么尝试,type: "relationship"
字段总是为空。我只是想建立一个非常简单的博客,没有什么花哨的。我在PayloadCMS Discord频道问过,但是没有得到回复。
以下是我的配置:
export default buildConfig({
serverURL: "http://localhost:4000",
admin: {
user: Users.slug,
},
// cors: "*",
collections: [Users, Posts, Media],
typescript: {
outputFile: path.resolve(__dirname, "payload-types.ts"),
},
graphQL: {
schemaOutputFile: path.resolve(__dirname, "schema.graphql"),
},
});
简单来说,我有3个模型:
// Posts.tsx
const Posts: CollectionConfig = {
slug: "posts",
// ...
fields: [
// ...
{
name: "title",
type: "text",
},
{
name: "author",
type: "relationship",
relationTo: "users",
},
{
name: "backgroundImage",
label: "backgroundImage",
type: "upload",
relationTo: "media",
maxDepth: 2,
},
// ...
],
};
// Users.tsx
const Users: CollectionConfig = {
slug: "users",
auth: {
depth: 2,
},
admin: {
useAsTitle: "email",
},
fields: [
// ...
{
name: "name",
type: "text",
},
// ...
],
};
// Media.tsx
const Media: CollectionConfig = {
slug: "media",
fields: [
{
name: "alt",
type: "text",
},
],
upload: {
staticURL: "/media",
staticDir: "media",
imageSizes: [
{
name: "thumbnail",
width: 400,
height: 300,
position: "centre",
},
{
name: "card",
width: 768,
height: 1024,
position: "centre",
},
{
name: "tablet",
width: 1024,
// By specifying `null` or leaving a height undefined,
// the image will be sized to a certain width,
// but it will retain its original aspect ratio
// and calculate a height automatically.
height: null,
position: "centre",
},
],
adminThumbnail: "thumbnail",
mimeTypes: ["image/*"],
},
};
我创建了一个运行良好的种子文件:当我登录到/admin门户时,我可以看到我所有的数据,包括上传,一切看起来都是手工完成的。2我测试了手工创建,它看起来是正确的(见下文)。
奇怪的是,当我请求嵌套的和相关的字段时,GraphQLPlayground工作正常(见下文)。
但当我尝试从前端应用程序查询它时,author
和backgroundImage
字段为null
,尽管查询完全相同:
{
__typename: 'Post',
id: '638522f471c0c4aaced74144',
title: 'Necessitatibus distinctio suscipit iure eum architecto aspernatur temporibus.',
backgroundImage: null,
author: null
}
这也发生在Postman身上,这让我相信我需要发送一些东西(我试过auth令牌和cookie),但我错过了。我试过为{ Query: { Author: () => {} } }
和其他很多文件添加自定义解析器,但GraphQL部门 * 真的 * 缺少文档,所以我只能盲目猜测。
在这方面的任何帮助都将非常感谢,否则我将不得不重新开始RESTful查询,这将挫败学习GraphQL和Payload的意义。
很乐意提供更多信息
1条答案
按热度按时间mklgxw1f1#
答:这是因为我的Users集合限制了管理员的读取权限。