mysql 쿼리를 받아 출력하려는대 get error 500이뜸
error 500이란? 데이터를 불러올 서버상에서의 오류가 발생하였을때 출력되는 오류코드
원문을 보면
const data2 = connection.query("SELECT * from product_Info", (error, rows, fields) => {
if (error) throw error;
rows;
});
코드가 이렇게 작성되어있음 여기가 잘못되었는대
connection.query()의 원문인 QueryFunction을 잘보면
인터페이스 (쿼리문,콜백함수,value)
라고되어있음. queryfunction 생성자는 쿼리문,콜백함수,value 3가지를 사용해서 객체를 생성해줌
여기서 객체 생성을 할때는 쿼리문을 통해서 받아온 데이터를
콜백함수의 type형식으로 받아와서 value에 저장해서
결과를 띄워줌
여기서 콜백함수 선언부를 잘 살펴보면
type queryCallback = (err: MysqlError | null, results?: any, fields?: FieldInfo[])
=> void;
이 콜백함수는 type으로 선언되어있는대 자기만의 특별한 형식으로 정의 되어있음. 근대 그게 void로 리턴됨.
이게뭐냐 console창에다가 받아온걸 던져준다는 의미임
대충 여기에 뭔가 뜰수있게해줌
즉 queryfunction생성자는
(쿼리문,콜백함수,옵션)
=>
쿼리문: 보내줄 쿼리문
콜백함수: queryCallback 형식으로 데이터를 받아옴
옵션 : 받아올 옵션
즉 interface인 queryfunction생성자는
첫번째는 보내줄 쿼리문
두번째는 void타입이지만 받아옴
세번째는 받아온 data를 필드값에다 저장시키는거임
그럼
queryfunction 의 결과값은
( 보내줄 쿼리문, 보내준 쿼리문을 통해 받은 값[void타입으로 받아서 콘솔에 띄움], 두번째에서 받은 값을 value에 넣어서 저장시킨값 )
이렇 객체가 튀어 나옴
내가한 방식은
이런식으로 rows[콜백함수의 결과값] 즉 void타입을 직접적으로 변수 responding에 넣어버리면 작동을 하지않음 value는 없고 출력만 하는 함수니까.
그래서 이걸 해결해줄 방법은
미리 선언해둔 변수 data1에다가
connection.query를 실행하는 도중에 받아온 void값을 변수에 넣어줘야함.
함수가 실행되는 와중에 메모리에서 빼내고 넣어줘야 넣어진다 이거임
return값은 void지만 함수가 실행되는 와중엔 memory에 남아있고 그 값을 그대로 다른 변수에 할당하는건 가능함
아무튼 미리 선언한 변수에 할당하니까 잘 됨