typeDefs 와 resolvers 를 작성하는 곳에 createAccount 폴더를 만든다.
그러고 createAccount 폴더 안에 createAccount.graphql , createAccount.js를만든다.
이거에 대한 설정은 블로그에 따로 기입해뒀다.
우선 Prisma는 데이터베이스에 관한 어려운 문제를 해결해주는 ORM이다.
createAccount.graphql의 코드는
type Mutation {
createAccount(
userName: String!
email: String!
firstName: String
lastName: String
bio: String
): User!
}
type Query {
someting: String
}
이렇게 작성한다. 왜 이렇게 했냐면 Prisma에서 제공하는 playground에 가보면
createUser에 대한 값으로 이런 값들을 받으라고 이미 만들어져있기 때문이다.
내가 설정만 하면 Mutation에 CRUD가 저절로 만들어준다. 정말 편리했다.
Query를 정의한 이유는 쿼리가 정의안되면 오류가 떠서 그냥 아무 쿼리나 정의했다.
이제 createAccount.js 의 코드를 보자 여기서 prisma를 이용해 graphql 에서 쉽게 데이터베이스에
저장하는법을 배운다 .
import { prisma } from "../../../../generated/prisma-client";
export default {
Mutation: {
createAccount: async (_, args) => {
const { userName, email, firstName = "", lastName = "", bio = "" } = args;
const user = await prisma.createUser({
userName,
email,
firstName,
lastName,
bio,
});
return user;
},
},
};
우선 맨위에는 prisma-client에서 prisma를 import 해주는 코드를 작성한다 그래야 prisma를 사용할수있다.
endpoint는 유출이 되면 안되므로 작성은 하지 않겠다.
그리고 Mutation에서 createAccount 요청이 들어오면 async , await을 이용해서 비동기적으로 정보를 생성한다.
두번째 인자는 내가 전송한 내용의 객체가 전송된다.
prisma.createUser(정보들)을 통해서 데이터베이스에 내용을 저장하게된다.
이렇게 작성하고 graphql의 playground에서 mutation을 통하면 계정이 생성된다!
계정생성을 아주 쉽게 할 수있어서 대박이었다.
'코딩 > Graphql' 카테고리의 다른 글
Prisma에서 기존값이 있는데 새로운 필드를 필수로 정해야할때 (0) | 2020.05.29 |
---|---|
GraphQL 파일들을 나눠서 작업하는방법 (0) | 2020.05.28 |
listen EADDRINUSE: address already in use :::4000 오류해결 (0) | 2020.05.18 |
Graphql 정리 (0) | 2020.05.18 |