Node.js GraphQLError:类型查询必须定义一个或多个字段。使用typegoose

Node.js GraphQLError:类型查询必须定义一个或多个字段。使用typegoose,node.js,mongoose,nestjs,typegoose,Node.js,Mongoose,Nestjs,Typegoose,我试图在我的项目上实现typegoose。我正在创建一个nestjs graphql服务器,并使用mongoose在数据库中推送文档 我尝试使用typegoose来简化实现新特性的方法,但我遇到了一个问题,就是如何用typegoose转换我的猫鼬“模式” 让我们看看我的代码 ad.ts 从'@typegoose/typegoose'导入{buildSchema,getModelForClass,prop}; 出口类广告{ @prop({required:true}) 标题:字符串; @prop(

我试图在我的项目上实现typegoose。我正在创建一个nestjs graphql服务器,并使用mongoose在数据库中推送文档

我尝试使用typegoose来简化实现新特性的方法,但我遇到了一个问题,就是如何用typegoose转换我的猫鼬“模式”

让我们看看我的代码

ad.ts

从'@typegoose/typegoose'导入{buildSchema,getModelForClass,prop};
出口类广告{
@prop({required:true})
标题:字符串;
@prop({required:true})
描述:字符串;
}
export const AdModel=getModelForClass(Ad);
export const AdSchema=buildSchema(Ad);
ad.controller.ts

从'@nestjs/common'导入{Body,Controller,Get,Post};
从“/ads.service”导入{AdsService};
从“./models/Ad”导入{Ad};
@控制器('ads')
导出类ADS控制器{
构造函数(私有只读AdsService:AdsService){}
@得到()
异步getAds():承诺{
return等待this.adService.findAll();
}
@Post()
异步创建(@Body()adDto:Partial):承诺{
返回等待this.adService.create(adDto);
}
}
ad.service.ts

从'@nestjs/common'导入{Injectable};
从'@nestjs/mongoose'导入{InjectModel};
从“./models/Ad”导入{Ad};
从'@typegoose/typegoose'导入{ReturnModelType};
@可注射()
出口级ADSS服务{
建造师(
@模型(广告名称)
私有只读adModel:ReturnModelType){}
异步创建(adDto:Partial):承诺{
const createdAd=newthis.adModel(adDto);
返回wait wait createdAd.save();
}
异步findAll():承诺{
return等待this.adModel.find().exec();
}
}
ad.module.ts

从'@nestjs/common'导入{Module};
从“/ads.service”导入{AdsService};
从'@nestjs/mongoose'导入{MongooseModule};
从“./models/Ad”导入{Ad,AdSchema};
从“/ads.controller”导入{AdsController};
@模块({
导入:[MongooseModule.forFeature([{name:Ad.name,schema:AdSchema}]),
控制器:[AdsController],
提供商:[AdsService],
})
导出类AdsModule{}
但我得到了这个错误信息:

错误堆栈跟踪

GraphQLError:类型查询必须定义一个或多个字段。
在SchemaValidationContext.reportError(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/graphql/type/validate.js:90:19)
在validateFields(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/graphql/type/validate.js:251:13)
在validateType(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/graphql/type/validate.js:226:7)
在validateSchema(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/graphql/type/validate.js:54:3)
在graphqlImpl(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/graphql/graphql.js:79:62)
在/home/olivier/www/other/green/back-end/graphql-server/node_-modules/graphql/graphql.js:28:59
在新的承诺()
位于Object.graphql(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/graphql/graphql.js:26:10)
在功能上。(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/type-graphql/dist/schema/schema-generator.js:18:52)
在Generator.next()处
在/home/olivier/www/other/green/back-end/graphql-server/node_-modules/tslib/tslib.js:110:75
在新的承诺()
在Object.u waiter(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/tslib/tslib.js:106:16)
位于Function.generateFromMetadata(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/type graphql/dist/schema/schema-generator.js:15:24)
在/home/olivier/www/other/green/back-end/graphql server/node_modules/type graphql/dist/utils/buildSchema.js:11:65
在Generator.next()处{
消息:“类型查询必须定义一个或多个字段。”
}
]
(节点:1828)未处理的PromisejectionWarning:错误:生成架构错误
在功能上。(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/type-graphql/dist/schema/schema-generator.js:20:27)
在Generator.next()处
完成时(/home/olivier/www/other/green/back-end/graphql-server/node_-modules/tslib/tslib.js:107:62)
在处理和拒绝时(内部/process/task_queues.js:93:5)
(节点:1828)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。(拒绝id:1)
(节点:1828)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

我想这与Typegoose无关。您是否定义了任何Graphql类型或查询?如果将
GraphQLModule
添加到应用程序的模块中,则需要有一个适当的
.graphql
文件,该文件至少应具有查询类型