我使用type-graphql,Apollo服务器和Mongoose进行了简单的设置:
@Query(() => User)
async getUser(@Arg('id') id: string) {
return UserModel.findById(id)
}
此基本解析器会产生以下错误:“无法为不可为空的字段User.id返回null。”
有一个简单的解决方法:调用UserModel.findById(id).toObject()
或UserModel.findById(id).lean()
,以便猫鼬生成一个简单的对象而不是一个文档。
我想了解为什么我每次从解析器返回内容时都必须添加“ lean”或“ toObject”。我在网上找到的将Mongoose和Graphql结合在一起的所有示例都未添加此样板代码。也许用一些无法理解Mongoose文档(依赖于“ get”和“ set”功能的代码)将graphql类型包装到reducer上?