无法返回null或不可为null的字段User.Role无法从Prisma突变中检索关系数据

时间:2019-09-16 05:09:35

标签: graphql apollo-server prisma prisma-graphql prisma-binding

我正在尝试在最基本的方面播放arroud APOLO SERVER,GRAPHQL PRISMA和struct ..我无法从简单查询中返回关系数据。

为什么我尝试添加带有角色ID的用户。我无法获取角色信息

我在用什么?

"dependencies": {
    "apollo-server": "^2.9.3",
    "bcryptjs": "^2.4.3",
    "graphql": "^14.5.5",
    "graphql-import": "^0.7.1",
    "jsonwebtoken": "^8.5.1",
    "prisma-client-lib": "^1.34.8"
  }

对于“我的简单查询”;

mutation{

  createUser(name:"tst",
  roleId:"ck0lx425n00z50782jgcl4qg8")
  {
    name
    role{
code}

Graphql返回错误提示

{
  "errors": [
    {
      "message": "Cannot return null for non-nullable field User.role.",
      "locations": [
        {
          "line": 4,
          "column": 5
        }
      ],
      "path": [
        "createUser",
        "role"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "Error: Cannot return null for non-nullable field User.role.",

GAPHQL SHCHEMA

scalar DateTime

type User {
  id: ID! 
  name: String! 
  role:Role!
  createdAt:DateTime 

}

 type Role{
   id:ID!,
   code:String!
   users:[User!]!
 }
type Query {
  users:[User!]!
  user:User!
  roles:[Role!]!
  role:Role!
}

type Mutation {
  createRole(code:String!):Role!
  createUser(name:String!,roleId:String!):User! 

 }

查询

function users(parent, args, context) {
    return context.prisma.uses()

}
function roles(parent,args,context){
    return context.prisma.roles()
}

动作

function  createRole(parent,args,context,info){
     return context.prisma.createRole({
         code:args.code
     });

function  createUser(parent,args,context,info){
    return context.prisma.createUser({
        name:args.name,
        role:{
            connect:{id:args.roleId}
        }
    },info);


}

PRISMA DATAMODEL

type User {
  id: ID! @id 
  name:String! 
  createdAt:DateTime @createdAt
  role:Role! @relation(Name:"Role Assinged To User")

}

type Role{
  id:ID! @id
  code:String! 
  users:[User!]! @relation(Name:"Role Assinged To User")

}

有人可以帮我吗,这是怎么解决的..我知道这将是我最想念的基础..我正在努力去理解吗?我缺少一些非常基本的东西吗?

1 个答案:

答案 0 :(得分:-1)

创建角色时,您还需要指定用户,因为您将其设为可能导致错误的要求