我如何在类型 - graphql中添加具有不同格式的自定义标量来生成GraphQl架构

发布于 2025-01-28 09:21:48 字数 1199 浏览 3 评论 0原文

我试图使用类型 - graphql lib生成GraphQl架构,我希望字段值接受任何数据类型,但仅采用字符串。我创建了一个具有名称setterValuescalar的自定义标

import { ObjectID } from 'mongodb'
import 'reflect-metadata'
import { Field, InputType, Int, ObjectType } from 'type-graphql'
import { DateScalar } from '../scalars/date.scalar'
import { SettingValueScalar } from '../scalars/setting-value.scalar'

@ObjectType()
@InputType('SettingInput')

export class Setting implements MSetting {
readonly _id!: ObjectID

@Field(() => Int)
 id!: number

 @Field({ nullable: true })
  slug?: string

 @Field({ nullable: true })
 domain?: string

 @Field(()=>SettingValueScalar,{ nullable: true })
 value?: string| number | string[] | number[]

 @Field(() => DateScalar, { nullable: true })
 createdAt?: Date

 @Field(() => DateScalar, { nullable: true })
 updatedAt?: Date

 }

 import { GraphQLScalarType, Kind } from 'graphql'

 export const SettingValueScalar = new GraphQLScalarType({
 name: 'SettingValue',
 description: 'Setting value scalar type',

 serialize(value: any): any {
  return value
 },
 parseValue(value: any): any {
  return value
 },
 parseLiteral(ast) {
  return last
 },
 })

I tried to generate a GraphQl schema using type-graphql lib I want the field value to accept any data type but it only takes a string. I have created a custom scalar with the name SettingValueScalar but it's not working as well

import { ObjectID } from 'mongodb'
import 'reflect-metadata'
import { Field, InputType, Int, ObjectType } from 'type-graphql'
import { DateScalar } from '../scalars/date.scalar'
import { SettingValueScalar } from '../scalars/setting-value.scalar'

@ObjectType()
@InputType('SettingInput')

export class Setting implements MSetting {
readonly _id!: ObjectID

@Field(() => Int)
 id!: number

 @Field({ nullable: true })
  slug?: string

 @Field({ nullable: true })
 domain?: string

 @Field(()=>SettingValueScalar,{ nullable: true })
 value?: string| number | string[] | number[]

 @Field(() => DateScalar, { nullable: true })
 createdAt?: Date

 @Field(() => DateScalar, { nullable: true })
 updatedAt?: Date

 }

SettingValueScalar

 import { GraphQLScalarType, Kind } from 'graphql'

 export const SettingValueScalar = new GraphQLScalarType({
 name: 'SettingValue',
 description: 'Setting value scalar type',

 serialize(value: any): any {
  return value
 },
 parseValue(value: any): any {
  return value
 },
 parseLiteral(ast) {
  return last
 },
 })

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文