如何使用带有特定参数的 Nexus 的 Prisma 插件 crud
How to use Nexus' Prisma plugin crud with specific arguments
我有一个 Advertiser
graphql 类型:
type Advertiser {
createdAt: DateTime!
id: Int!
isActive: Boolean!
name: String!
updatedAt: DateTime
}
给定以下突变:
mutationType({
definition(t) {
t.crud.createOneAdvertiser();
}
});
Nexus 生成此架构(如预期):
input AdvertiserCreateInput {
createdAt: DateTime!
isActive: Boolean!
name: String!
updatedAt: DateTime
}
type Mutation {
createOneAdvertiser(data: AdvertiserCreateInput!): Advertiser!
}
问题是,如果我想省略一些参数怎么办?例如,我不希望客户端传递 createdAt
或 updatedAt
。这些列应该在服务器中解析。
在此处查看(部分)文档 - https://nexusjs.org/docs/plugins/prisma/api#example-4
再一次,发布此问题后立即找到了答案。像这样简单地传递 computedInputs:
t.crud.createOneAdvertiser({
computedInputs: {
createdAt: () => DateTime.utc().toString(),
updatedAt: () => null
}
});
Eliya 问得好。
如果您使用 Nexus 来定义您的 GraphQL 类型,您可以使用 objectType
to define your schema types. When paired with Prisma and nexus-plugin-prisma, you can use t.model
将您的模式类型映射到 objectType
中的数据库模型。在定义您的 objectType
时,您可以选择省略数据库模型中的某些列。
这里有一个 Prisma 模型示例来演示这个概念:
model Post {
id Int @id @default(autoincrement())
title String
content String?
updatedAt DateTime @updatedAt
}
定义 objectType
时,您可以包含 updatedAt
列:
import { objectType } from 'nexus'
const Post = objectType({
name: 'Post',
definition(t) {
t.model.id()
t.model.title()
t.model.content()
t.model.published()
t.model.author()
t.model.updatedAt()
}
})
export default Post
updatedAt
,在此示例中,将由 GraphQL server/Prisma 解析,尽管包含在 inputType
生成的 inputType
中,但您的客户端不需要传递参数联系。
我希望这能回答您的问题。如果您需要任何进一步的说明,请告诉我。
我有一个 Advertiser
graphql 类型:
type Advertiser {
createdAt: DateTime!
id: Int!
isActive: Boolean!
name: String!
updatedAt: DateTime
}
给定以下突变:
mutationType({
definition(t) {
t.crud.createOneAdvertiser();
}
});
Nexus 生成此架构(如预期):
input AdvertiserCreateInput {
createdAt: DateTime!
isActive: Boolean!
name: String!
updatedAt: DateTime
}
type Mutation {
createOneAdvertiser(data: AdvertiserCreateInput!): Advertiser!
}
问题是,如果我想省略一些参数怎么办?例如,我不希望客户端传递 createdAt
或 updatedAt
。这些列应该在服务器中解析。
在此处查看(部分)文档 - https://nexusjs.org/docs/plugins/prisma/api#example-4
再一次,发布此问题后立即找到了答案。像这样简单地传递 computedInputs:
t.crud.createOneAdvertiser({
computedInputs: {
createdAt: () => DateTime.utc().toString(),
updatedAt: () => null
}
});
Eliya 问得好。
如果您使用 Nexus 来定义您的 GraphQL 类型,您可以使用 objectType
to define your schema types. When paired with Prisma and nexus-plugin-prisma, you can use t.model
将您的模式类型映射到 objectType
中的数据库模型。在定义您的 objectType
时,您可以选择省略数据库模型中的某些列。
这里有一个 Prisma 模型示例来演示这个概念:
model Post {
id Int @id @default(autoincrement())
title String
content String?
updatedAt DateTime @updatedAt
}
定义 objectType
时,您可以包含 updatedAt
列:
import { objectType } from 'nexus'
const Post = objectType({
name: 'Post',
definition(t) {
t.model.id()
t.model.title()
t.model.content()
t.model.published()
t.model.author()
t.model.updatedAt()
}
})
export default Post
updatedAt
,在此示例中,将由 GraphQL server/Prisma 解析,尽管包含在 inputType
生成的 inputType
中,但您的客户端不需要传递参数联系。
我希望这能回答您的问题。如果您需要任何进一步的说明,请告诉我。