# prisma-client-lib 문법 분석 가이드 입니다.
# prisma Prisma Connection파트
yarn prisma-client-lib 이후 프리즈마 데모 서버에서 데이터를 쿼리하는 방법을 정리 했습니다.
# 단순히 공부한 내용을 열거합니다.
---------------------------------------------------------------------------------------------------------------------------
[prisma.createUser]
---------------------------------------------------------------------------------------------------------------------------
#1. 단순하게 user하나 만들기
//User 만들기
try {
const user = await prisma.createUser({
name,
email,
firstName,
lastName,
bio
});
return true;
} catch (error) {
return false;
}
#2 . Post여러개 만들고, 주인user 연결하기
// Post 만들고 user 연결하기 - prism - client
createPosts: async (_, { userId, postsCaption }) => {
try {
postsCaption.forEach(async caption => {
await prisma.createPost({
caption: caption,
user: { connect: { id: userId } }
});
});
} catch (error) {
return false;
}
return true;
}
#2 . Post여러개 만들고, 주인user 연결하기
// Post 만들고 user 연결하기 -in play ground
mutation {
createPost(
data: {
caption: "I LOVE WORLD"
location: "HRE"
user: { connect: { id: "ck63l0btf5hdt0b09uizzky8x" } }
}
) {
id
}
}
---------------------------------------------------------------------------------------------------------------------------
[prisma.updateUser]
---------------------------------------------------------------------------------------------------------------------------
// #1. 디폴트 값 처리
// 1. 프리즈마 데이터모델에서 @default("")
// 2. 리소버에서, args 를 받아올때, ` 디폴트 매개변수` 설정
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;
}
}
};
#2. 단순하게 user 업데이트
return prisma.updateUser({
where: { id: user.id },
data: { name, email, firstName, lastName, bio, avatar }
});
#3. 특정 아이디만 비밀번호 다음으로 업데이트 하기
mutation {
updateManyUsers(
where: { id_in: ["ck63kqofxoamu0b00zc291fi2", "ck63l03ev5hde0b09j89rpy6d"] }
data: { password: "qwer" }
){
count
}
}
#4. user는 post가 배열로 relation되어 연결. 이를 업데이트
mutation {
updateUser(
where: { id: "ck63l03ev5hde0b09j89rpy6d" }
data: { posts: { connect: { id: "ck68v8leoegcl0b097d86guvt" } } }
){
name
password
posts{
id
location
caption
user{
name
}
}
}
}
#5. User의 팔로우 언팔로
Mutation: {
follow: async (_, args, { request }) => {
isAuthenticated(request);
const { id } = args;
const { user } = request;
try {
await prisma.updateUser({
where: { id: user.id },
data: {
following: {
connect: {
id
}
}
}
});
return true;
} catch {
return false;
}
}
}
Mutation: {
unfollow: async (_, args, { request }) => {
isAuthenticated(request);
const { id } = args;
const { user } = request;
try {
await prisma.updateUser({
where: { id: user.id },
data: {
following: {
disconnect: {
id
}
}
}
});
return true;
} catch {
return false;
}
}
}
DOS IMPACT - WEB Developer
KIM DO YOUNG
WEB : REACT JS | REACT NATIVE | GraphQL PRISMA
'GraphQL BackEnd > Lecture' 카테고리의 다른 글
GraphQL + Prisma (5) Prisma Connection파트 (0) | 2020.02.07 |
---|---|
GraphQL + Prisma (4) Prisma fragment 파트 (0) | 2020.02.07 |
GraphQL + Prisma (2) Prisma 쿼리파트 (0) | 2020.02.07 |
GraphQL + Prisma (1) 프리즈마 데이터 모델 분석 (0) | 2020.02.07 |
GraphQL + Prisma 환경설정 (0) | 2020.02.03 |