如何仅通过一个字段更改就可以更新节点,而剩下的其他字段则不予处理?
我的用户类型
type User {
id: ID!
user_id: String!
username: String!
email: String!
role: Role!
isVerified: Boolean!
}
我的输入类型
input UserUpdateInput {
user_id: String
username: String
email: String
password: String
role: Role
isVerified: Boolean
}
input UserWhereUniqueInput {
id: ID
user_id: String
email: String
}
我的变异类型
type Mutation {
updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput): User
}
我的解析器
function updateUser(root, args, context, info){
return context.db.mutation.updateUser({
data: args.data,
where: {
id: args.where.id
}
}, info)
}
这是在GraphQL游乐场发送的请求
mutation{
updateUser(
data: {
isVerified: true
}
where:{
user_id : "afc485b"
}
)
{
isVerified
}
}
这是错误消息
{
"errors": [
{
"message": "Cannot read property 'mutation' of undefined",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"updateUser"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"stacktrace": [
"TypeError: Cannot read property 'mutation' of undefined"
有人帮助我。我想念什么? 按照丹尼尔·雷登(Daniel Rearden)在答案部分的建议更新服务器后,出现新错误
{
"message": "Cannot read property 'updateUser' of undefined",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"updateUser"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"stacktrace": [
"TypeError: Cannot read property 'updateUser' of undefined"
答案 0 :(得分:0)
该错误是由于未正确将db
属性添加到您的上下文而导致的。假设您仍在使用版本1,则您的代码应如下所示:
const { prisma } = require('./generated/prisma-client')
const server = new ApolloServer({
...
context: {
db: prisma,
},
})
答案 1 :(得分:0)
我注意到的第一件事是您的 GQL 查询不正确。
你的:
mutation{
updateUser(
data: {
isVerified: true
}
where:{
user_id : "afc485b"
}
)
{
isVerified
}
}
在“mutation”这个词之后,你为调用设置一个名称,即 “UpdateUser”但实际上可以是任何东西。对于每个部分
where 子句您需要使检查值成为一个对象,即
where: { myProperty: {eq: "some value"}}
所以你的查询应该更像这样:
mutation UpdateUser {
updateUser(
data: {isVerified: true}
where:{user_id : {eq: "afc485b"}}
)
{
isVerified
}
}
希望有所帮助...我没有完全阅读其余部分,但认为这将有助于解决您遇到的初始错误。