无法解析自定义对象 graphql 架构
Posted
技术标签:
【中文标题】无法解析自定义对象 graphql 架构【英文标题】:cannot resolve custom object graphql schema 【发布时间】:2020-06-13 23:04:13 【问题描述】:我正在尝试为 Apollo Server 设置架构,但遇到了错误。我不太确定如何提出这个问题,所以我会发布必要的文本/代码。
"message": "不能为不可为空的字段 User.id 返回 null。"
我的解析器/index.js 如下所示:
import * as Mutation from "./Mutation";
import * as Query from "./Query";
import User from "./User";
const resolvers = Mutation, Query, User ;
console.log(resolvers);
export default resolvers;
产生以下输出:
Mutation:
createListing: [Getter],
updateListing: [Getter],
deleteListing: [Getter],
createUser: [Getter]
,
Query: listings: [Getter], listing: [Getter], userLogin: [Getter] ,
User: [AsyncFunction: user]
我的 typeDefs 文件是这样的
import gql from "apollo-server";
const typeDefs = gql`
type Listing
description: String!
id: ID!
title: String!
createdBy: User!
type User
id: ID!
email: String!
type AuthData
id: ID!
token: String!
expiresIn: String!
input UserInput
email: String!
password: String!
input ListingInput
id: ID
title: String!
description: String!
type Mutation
createUser(userInput: UserInput): User!
createListing(listingInput: ListingInput): Listing!
updateListing(listingInput: ListingInput): Listing!
deleteListing(id: ID!): Boolean!
type Query
listings: [Listing!]!
listing(id: ID!): Listing!
userLogin(userInput: UserInput): AuthData!
`;
export default typeDefs;
问题是我不知道如何获取列表类型的用户数据
createdBy 实际上是 ID!字段,我希望 graphQL 为我获取用户数据。以下是我一直在尝试使用的查询。
query
listing(id: 35)
id
title
createdBy
id
email
Graphql 初学者在这里。我是否使用了正确的方法? 如果需要,我还可以提供 git repo。如何重新组织它以使其正常工作?
【问题讨论】:
listing(id)
解析器?不返回 createdBy
的用户类型 - 可能仅从数据库列表记录中返回用户 id
.. 使用加入
【参考方案1】:
如果您的解析器为所需属性返回 null,Graphql 将抛出此错误。
您似乎只为Mutation
、Query
和User
定义了解析器,但您需要为列表创建另一个可用于解析 createdBy 字段的解析器。我想它看起来像这样:
Listing.js
const Listing =
createdBy: (root, args, ctx) =>
//code to fetch actual user goes here, you'd presumably have some kind of
//id on the listing like 'creator' that refers to a user id which you could
//access from the root like root.creator
return
id: '1',
email: 'foo@bar.com'
export default Listing
【讨论】:
以上是关于无法解析自定义对象 graphql 架构的主要内容,如果未能解决你的问题,请参考以下文章
Schema Generator 无法确定 DTO 中自定义对象的 GraphQL 输出类型