Typescript 查询语言关系
我想使用FQL编写graphql后端端,但我无法处理创建和连接FQL 我的后端节点代码: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
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
}