2015-09-18 23 views
7

Tôi đang cố gắng thực hiện một đột biến đơn giản bằng cách sử dụng GraphQL với giao diện GraphiQL. đột biến của tôi trông như thế này:Biến đột biến GraphQL

mutation M($name: String) { 
    addGroup(name:$name) { 
    id, 
    name 
    } 
} 

với các biến:

{ 
    "name": "ben" 
} 

Nhưng nó mang lại cho tôi những lỗi: Variable $name of type "String" used in position expecting type "String!"

Nếu tôi thay đổi đột biến của tôi để mutation M($name: String = "default") nó hoạt động như mong đợi. Điều này có vẻ như nó liên quan đến hệ thống kiểu, nhưng tôi dường như không thể tìm ra vấn đề là gì.

Trả lời

6

Bạn có thể đã xác định tên đầu vào là một chuỗi không rỗng (liên kết gì đó type: new GraphQLNonNull(GraphQLString) nếu sử dụng máy chủ js hoặc String! trong GraphQL đơn giản).

Vì vậy, đầu vào của bạn trong đột biến phải khớp, có nghĩa là cũng phải là một chuỗi không null. Nếu bạn thay đổi thành công, hãy làm việc:

mutation M($name: String!) { 
    addGroup(name:$name) { 
    id, 
    name 
    } 
} 

Ngoài ra nếu bạn xác định giá trị mặc định như bạn đã làm, vì bạn là chuỗi không trống.

Cuối cùng, bạn có thể yêu cầu không phải là vô giá trị trong máy chủ.

0

Tôi nghĩ rằng trong bạn addGroup() đột biến, args cho tên là loại String!new GraphQLNonNull(GraphQLString) nhưng trong đột biến của bạn, bạn chỉ định là String xung đột với hệ thống kiểu.

Các vấn đề liên quan