gpt4 book ai didi

mongodb - 使用多个装饰器将 Type-GraphQL 与 Typegoose 结合起来

转载 作者:行者123 更新时间:2023-12-05 01:34:48 25 4
gpt4 key购买 nike

我正在使用 Type-GraphQl(它是一个 Typescript 库,可让您使用 Typescript 类自动生成 GraphQL 模式和解析器)和 Typegoose(它对 Mongoose 查询执行相同的操作)。我正在努力减少定义我的数据的文件数量,理想情况下,我只有一个 GQL 和 MongoDB 数据的真实来源。

能否将这两个库结合起来,以便我使用单个 Typescript 类在一个文件中描述我的 GQL 架构和我的 Mongoose 类型?

例如,一个简单的 type-graphql 文件(定义“book”类型)如下所示:

import { Field, ObjectType } from "type-graphql";
import { InStock } from "./gql/shared/types";

@ObjectType()
export class Book extends InStock {
@Field()
title: string;

@Field()
publicationDate: Date;

@Field()
author: string;

@Field()
pages: number;
}

typegoose 类看起来非常相似,但使用 @prop 装饰器来设置模式的属性:

import * as mongoose from "mongoose";
import { getModelForClass, prop } from "@typegoose/typegoose";
import { InStock } from "./mongoose/shared/types";

class BookClass extends InStock {
@prop()
public title: string;
@prop()
public author: string;
@prop()
public publicationDate: Date;
@prop()
public pages: number;
@prop()
}

export const Book = getModelForClass(BookClass);

是否可以在同一个文件中将这两种类型与两种装饰器结合起来,或者这会破坏typegoose/type-graphl吗?像这样:

import * as mongoose from "mongoose";
import { Field, ObjectType } from "type-graphql";
import { InStock } from "./shared";
import { getModelForClass, prop } from "@typegoose/typegoose";

export class Book extends InStock { // Export type-graphql here...
@prop()
@Field()
public title: string;
@prop()
@Field()
public author: string;
@prop()
@Field({ nullable: true })
public publicationDate?: Date;
@prop()
@Field()
public pages: number;
}

export const Book = getModelForClass(BookClass); /// Export typegoose here...

最佳答案

我看到很多用户一起成功使用 typegoose 和 typegraphql

@ObjectType()
export class Book extends InStock {
@prop()
@Field()
public title: string;

@prop()
@Field()
public author: string;

@prop()
@Field({ nullable: true })
public publicationDate?: Date;

@prop()
@Field()
public pages: number;
}

export const Book = getModelForClass(BookClass);

Here some offical examples from TypeGraphQL

关于mongodb - 使用多个装饰器将 Type-GraphQL 与 Typegoose 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63580523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com