// 컴포넌트 마운트 시 메세지 가져오기
const getMsg = async () => {
try {
let { data: chat_messages, error } = await supabase
.from("chat_messages")
.select("*");
// 메세지 가져온 것을 state에 업데이트 하기
setTestOne(chat_messages);
} catch (err) {
console.log(err);
}
};
// 채팅메세지 테이블을 구독하여 모든 이벤트에 대한 알림을 받도록 하는 함수
useEffect(() => {
const updatedMessages = supabase
.channel("custom-all-channel")
.on(
"postgres_changes",
{ event: "*", schema: "public", table: "chat_messages" },
(payload) => {
setTestOne((prev) => [...prev, payload.new]);
}
)
.subscribe();
// 마운트 시 메세지 가져오기
getMsg();
// 언마운트 시 구독 해제
return () => {
updatedMessages.unsubscribe();
};
}, []);
const { data: chatRooms, error } = await supabase
.from("chat_room")
.select()
.contains("participants", [{ user_id: userData.id }]);
이렇게 participants 필드에서 user_id가 현재 로그인 유저 id와 같은 것을
가져오도록 쿼리를 작성했는데
JSON 타입에 유효하지 않은 input 문법 오류(?)가 나온다..
아무래도 테이블 설정을 잘못한 것이거나 쿼리문의 오류겠지.. 하는 막연한 생각이 든다.
오늘 강의를 한번 더 듣고 놓친 부분을 확인해봐야겠다..