我正在使用该typescript-mongodb
插件graphql-codegen
生成 Typescript 类型,用于从 MongoDB 中提取数据并通过 Node.js 上的 GraphQL 输出。
我的输入 GraphQL 架构如下所示
type User @entity{
id: ID @id,
firstName: String @column @map(path: "first_name"),
...
生成的输出 Typescript 类型看起来正确
export type User = {
__typename?: 'User',
id?: Maybe<Scalars['ID']>,
firstName?: Maybe<Scalars['String']>,
...
以及对应的DB对象
export type UserDbObject = {
_id?: Maybe<String>,
first_name: Maybe<string>,
...
问题是当实际发送回 mongo 文档时,UserDbObject
我没有得到输出中映射的字段。我可以编写一个自定义解析器,将字段重新映射回User
类型,但这意味着我将字段映射到两个不同的地方。
即我没有像这样从解析器获取映射字段
userById: async(_root: any, args: QueryUserByIdArgs, _context: any) : Promise<UserDbObject> => {
const result = await connectDb().then((db) => {
return db.collection<UserDbObject>('users').findOne({'_id': args.id}).then((doc) => {
return doc;
});
})
...
return result as UserDbObject;
}
};
有没有办法使用typescript-mongodb
插件只需要在模式中映射这些字段,然后使用自动生成的代码来解析它们?