我在使用TypeGraphQL填充字段时遇到了麻烦。
情况摘要举例:
TypeGraphQL
TypeDef
@ObjectType()
class User {
...
}
@ObjectType()
class Post {
...
@Field()
user: User
}
字符串
解析器
import { Post, User } from '@/models' // mongoose schema
@Resolver(() => Post)
class PostResolver {
@Query(() =>. Post)
async getPost(id: string) {
return await Post.findById(id);
}
...
@FieldReoslver(() => User)
async user(@Root() post: Post) {
return await User.findById(post.user) // Error Occurs here.
}
}
型
Mongoose
PostSchema
const PostSchema = new Schema({
...
user: {
type: Schema.ObjectId,
ref: "User",
}
})
型
我想在请求数据Post
时填充user
字段,字段类型为User
。
所以,我像上面一样使用了@FieldResolver
,但是我遇到了类型错误,因为post.user
是User
的类型,而不是mongoose的ObjectId
。
在执行getPost
解析器时,user
字段首先是ObjectId
类型,但我希望在客户端获得响应时将此字段填充为User
。
我该怎么熬过去?
先谢了。
1条答案
按热度按时间bksxznpy1#
这是一篇很老的文章了,也许你已经有答案了。或许这能帮到别人。
在TypeGraphQL typeDef中,
user
的类型必须是string
。它不能是“用户”类型。此外,FieldResolver的名称需要不同于
user
。然而,这不会遵循正常模式。所以也许在你的typeDef中将
post.user
改为post.userId
。然后,FieldResolver将为post.user
返回一个“User”类型,允许您使用可读的GraphQL查询。post.user._id应该可以工作。