Typescript 查询语言关系

Typescript 查询语言关系,typescript,graphql,nestjs,faunadb,Typescript,Graphql,Nestjs,Faunadb,我想使用FQL编写graphql后端端,但我无法处理创建和连接FQL 我的后端节点代码: async createNew(data) { const query = q.Create( q.Collection('comments'), { data } ) const result: values.Document<Comment> = await this.client.query(query); result.dat

我想使用FQL编写graphql后端端,但我无法处理创建和连接FQL

我的后端节点代码:

  async createNew(data) {
    const query = q.Create(
      q.Collection('comments'),
      { data }
    )

    const result: values.Document<Comment> = await this.client.query(query);
    result.data._id = result.ref.id;

    return result.data;
  }
我希望这段代码将创建一个新用户,并将选票与此评论连接起来,但我在FaunaDB comments集合中得到了这个令人悲伤的结果:

我编写了下一个代码,为我做到这一点,但我确信这是一个反模式描述

我正在尝试使用生成的GraphQL模式:

scalar Date
scalar Time
scalar Long

type Comment {
  _id: ID!
  likes: Int!
  content: String!
  creationDate: Time!
  user: User!
  ballot: Ballot!
  _ts: Long!
}

type User {
  birthday: Date!
  email: String!
  username: String!
  _id: ID!
  country: String!
  createdBallots(
    _size: Int
    _cursor: String
  ): BallotPage!
  gender: Gender!
  password: String!
  _ts: Long!
}

enum Gender {
  MALE
  FEMALE
  OTHER
}

type Mutation {
  createComment(data: CommentInput!): Comment!
  createUser(data: UserInput!): User!
}

input CommentInput {
  user: CommentUserRelation
  creationDate: Time!
  content: String!
  likes: Int!
  ballot: CommentBallotRelation
}

input CommentUserRelation {
  create: UserInput
  connect: ID
}

input UserInput {
  username: String!
  email: String!
  password: String!
  birthday: Date!
  gender: Gender!
  country: String!
  createdBallots: UserCreatedBallotsRelation
}

你的模式是什么?用模式更新是你上传的共享模式还是导入后生成的模式?请仅共享上载的内容,其中包括您使用的GraphQL指令。输入类型是为自动生成的create TRANSTIONS自动生成的--请仔细检查您不尝试为生成的查询创建自己的输入类型,因为这会导致问题。我只想确认我是否正确理解了问题。您正在创建自己的GraphQL后端,是否希望为“反模式”代码使用单个FQL?
  async createNew(data) {
    if(data.user) {
      let id;
      if(data.user.create) {
        const user = await this.userService.createNew(data.user.create);
        id = user._id;
      }
      data.user = q.Ref(
        q.Collection('users'), id ?? data.user.connect
      );
    }

    const query = q.Create(
      q.Collection('comments'),
      { data }
    )

    const result: values.Document<Comment> = await this.client.query(query);
    result.data._id = result.ref.id;

    return result.data;
  }
type User @collection(name: "users") {
  username: String!
  email: String!
  password: String!
  birthday: Date!
  gender: Gender!
  country: String!
  createdBallots: [Ballot!]! @relation
}

enum Gender {
  MALE
  FEMALE
  OTHER
}

type Comment @collection(name: "comments") {
  user: User!
  creationDate: Time!
  content: String!
  likes: Int!
  ballot: Ballot!
}
scalar Date
scalar Time
scalar Long

type Comment {
  _id: ID!
  likes: Int!
  content: String!
  creationDate: Time!
  user: User!
  ballot: Ballot!
  _ts: Long!
}

type User {
  birthday: Date!
  email: String!
  username: String!
  _id: ID!
  country: String!
  createdBallots(
    _size: Int
    _cursor: String
  ): BallotPage!
  gender: Gender!
  password: String!
  _ts: Long!
}

enum Gender {
  MALE
  FEMALE
  OTHER
}

type Mutation {
  createComment(data: CommentInput!): Comment!
  createUser(data: UserInput!): User!
}

input CommentInput {
  user: CommentUserRelation
  creationDate: Time!
  content: String!
  likes: Int!
  ballot: CommentBallotRelation
}

input CommentUserRelation {
  create: UserInput
  connect: ID
}

input UserInput {
  username: String!
  email: String!
  password: String!
  birthday: Date!
  gender: Gender!
  country: String!
  createdBallots: UserCreatedBallotsRelation
}