在NestJS中实现GraphQL全局对象识别(代码优先方法)



我正在尝试在NestJS中实现GraphQL文档中描述的全局对象识别。

1。)我首先创建了一个Node接口:

import { ID, InterfaceType, Field } from '@nestjs/graphql'
@InterfaceType()
export abstract class Node {
@Field(type => ID)
id: number
}

2。)我实现了它在我的模型:

import { Table } from "sequelize-typescript";
import { ObjectType } from "@nestjs/graphql";
import { Node } from "src/node/node-interface";
@ObjectType({
implements: Node
})
@Table
export class User extends Model {
// [Class body here...]
}

3)。然后我创建了一个查询,它将返回用户:

import { Resolver, Query} from "@nestjs/graphql";
import { User } from "./user-model";
@Resolver(of => User)
export class UserResolver {
@Query(returns => [Node])
async users() {
let users = await User.findAll();
console.log(users);
return users;
}
}

4)。然后我从文档中执行测试查询:

{
__schema {
queryType {
fields {
name
type {
name
kind
}
args {
name
type {
kind
ofType {
name
kind
}
}
}
}
}
}
}

5)。但是没有收到正确的响应:

{
"__schema": {
"queryType": {
"fields": [
// This array may have other entries
{
"name": "node",
"type": {
"name": "Node",
"kind": "INTERFACE"
},
"args": [
{
"name": "id",
"type": {
"kind": "NON_NULL",
"ofType": {
"name": "ID",
"kind": "SCALAR"
}
}
}
]
}
]
}
}
}

6)。我得到这个:

{
"data": {
"__schema": {
"queryType": {
"fields": [
{
"name": "users",
"type": {
"name": null,
"kind": "NON_NULL"
},
"args": []
}
]
}
}
}
}

我不知道我做错了什么。如果你能帮助我,我会很感激的。

也许太晚了,但我在节点解析器节点必须为空


import * as GQL from '@nestjs/graphql';
@GQL.Resolver(() => Node, {})
export class NodeResolver {
@GQL.Query(() => Node, {
name: 'node',
defaultValue: [],
nullable: true,
})
node(
@GQL.Args('id', { type: () => GQL.ID } as GQL.ArgsOptions)
id: Scalars['ID'],
): Promise<Node> {
// Implement
return null;
}
}

结果:


{
"name": "node",
"type": {
"name": "Node",
"kind": "INTERFACE",
},
"args": [
{
"name": "id",
"type": {
"kind": "NON_NULL",
"ofType": {
"name": "ID",
"kind": "SCALAR"
}
}
}
]
},

最新更新