전체 글

etc

읽을 내용

보호되어 있는 글입니다.

개발/DB

[MariaDB] 외래키 조회

전체 외래키 조회 select table_name, column_name, constraint_name, referenced_table_name, referenced_column_name from information_schema.key_column_usage where table_schema = 'database이름' and referenced_table_schema is not null; 특정 테이블을 참조하는 외래키 조회 select table_name, column_name, constraint_name, referenced_table_name, referenced_column_name from information_schema.key_column_usage where referenced_tabl..

개발/Flutter

[Error] dependOnInheritedWidgetOfExactType<MediaQuery>() or dependOnInheritedElement() was called before initState() completed.

문제점 MediaQuery.of(context)를 initState함수 내에서 사용해서 발생했다. MediaQuery는 InheritedWidget을 상속받는 클래스이다. of로 context를 통해서 MediaQuery를 가져오는 역할을 수행하는 dependOnInheritedWidgetOfExactType함수를 시작으로 발생한 것이다. 내부 코드 주석에 적힌 설명에 따르면 생성자나 initState함수는 InheritedWidget의 값이 변해도 다시 호출되지 않기에 이곳에선 호출되지 않아야 한다고 한다. 디버깅으로 정확히 발생한 곳을 찾으니 StatefulElement클래스 내의 dependOnInheritedElement함수에서 발생했다. lifecycle이 created일 때(initState함..

개발/Flutter

ScrollView내의 google map 스크롤 가능하게 설정

아래 코드를 구글 맵에 넣으면 동작 gestureRecognizers: { Factory( () => EagerGestureRecognizer() ) }, 테스트 코드 참고 How to avoid scrolling ListView when scrolling in map (MapBox) within ListView When I swipe my map sometimes it is leading to scroll of ListView, so I would like to discover optimal solution for this situation. I am using flutter_map package and it has no gestureRecognizers stackoverflow.com

개발/Flutter

showDialog가 루트 Navigator의 context만 가져오는 문제

과정 스킵 Navigator를 여러개를 쓰고있는 상태이다. 하위 Navigator에서 showDialog를 이용해 AlertDialog를 띄우는 상황에 action을 이용해 dialog와 dialog를 띄운 페이지를 pop을 하기위해 popUntil을 이용했다. (참고로 popUntil로 이동할 route의 이름은 route엔 존재하지 않음) 그리고 테스트를 하는데 화면이 갑자기 검게 변했다. 이 상태에서 핫 리로드를 수행해보면 아래와 같은 에러가 발생한다. 모든 화면이 pop되어 없는 상태여서 발생한 에러이다. context를 통해 가까운 Navigator를 찾아 pop을 한다면 발생하지 않을 에러인데 발생해 이해할 수 없었다. 하위 Navigator의 initialRoute가 루트와 달라 아래 코드..

개발/Flutter

MultipartRequest의 response 처리

MultipartRequest는 일반적인 get, post 함수로 통신하면 결과로 Response타입의 데이터를 주는 것과 달리 결과로 StreamedResponse타입의 데이터를 뱉는다. 이를 Response클래스 내의 fromStream함수를 이용해 StreamedResponse를 Response로 변경하면 get, post 등의 결과처럼 처리 가능하다. // request -> MultipartRequest request; final streamedResponse = await request.send(); final result = await http.Response.fromStream(streamedResponse); 참고 How to get response body with request.sen..

개발/Node.js

[Error][Express] MulterError: Unexpected field

문제점 이미지 파일을 2개 이상 전송했는데 multer().single함수를 사용하여 발생 해결방법 single대신 array함수를 사용한다. multer().array(fieldName, maxCount) 첫번째 인자로는 single의 인자와 똑같이 전송시에 정해둔 fieldName 두번째 인자로는 전송할 이미지의 최대 개수 두 인자를 주면 된다. 참고로 single함수를 사용하면 file의 정보는 req.file로 하나의 정보만 볼 수 있는데 array함수를 사용하면 req.files에 리스트로 담겨있는 것을 볼 수 있다.

개발/Node.js

[Error][Express][Flutter] TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined

flutter에서 express서버로 image를 전송한 뒤 multer 미들웨어를 통해 받을 때 위 에러가 발생했다. 위 에러가 발생하면 서버가 종료되었다가 다시 실행되어 flutter에선 아래 에러를 뱉어낸다. Unhandled Exception: Connection closed before full header was received 통신이 다 끝나기도 전에 서버가 재시작되어 발생한다고 볼 수 있다. 문제점 const storage = multer.diskStorage({ destination: (req, file, callback) => { callback(null, __dirname + '/target/dir'); }, filename: (req, file, callback) => { callb..

개발/DB

[MariaDB] 마지막으로 추가한 auto_increment값 가져오기

select last_insert_id(); 참고 LAST_INSERT_ID Last inserted auto_increment value. mariadb.com

개발/DB

[MariaDB] 컬럼 이름 변경

alter table 테이블이름 rename column 컬럼이름 to 새로운컬럼이름 참고 ALTER TABLE Modify a table's definition. mariadb.com

leebera_
LeeBera