코드를 작성하기 전 세운 로직은 다음과 같다.
isMe: async ({ id }, {}, { loggedInUser }) => {
const shop = await client.coffeeShop.findUnique({
where: {
id,
},
});
if (shop.userId === loggedInUser.id) {
return true;
} else {
return false;
}
return false;
},
위와 같이 작성하였을 때, 다른 사용자의 것에서는 버튼이 보이지 않았다. 하지만 loggedInUser가 존재하지 않는 비 로그인 상태일 경우, 게시물이 출력되지 않는 에러가 발생했다. 따라서 아래와 같이 수정했다.
isMe: async ({ id }, {}, { loggedInUser }) => {
const shop = await client.coffeeShop.findUnique({
where: {
id,
},
});
if (loggedInUser) {
if (shop.userId === loggedInUser.id) {
return true;
} else {
return false;
}
}
return false;
},
로그인한 유저가 있을 경우에 게시물의 유저 id와 로그인 id를 비교한다. 만약 존재하지 않는다면 false를 반환하게끔 수정하여 에러를 해결하였다.
{data?.seeCoffeeShop.shop.isMe ? (
<Buttons>
<Link to={`/edit/${id}`} reloadDocument>
<span disabled={message !== ''}>편집</span>
</Link>
<span onClick={handleDeleteShop} disabled={message !== ''}>
삭제
</span>
</Buttons>
) : (...