error | tip/tip
MySql json타입의 column을 nodejs에서 조회하기
meno1011
2022. 12. 26. 10:33
728x90
MySql의 테이블에 데이터를 json타입으로 저장을 했을경우
api 콜을 해서 출력을 하면 아래와 같이 string형식으로 나오게 된다.
"{\"a\": \"a-data\", \"b\": \"b-data\", \"c\": \"c-data\", \"d\": \"d-data\"}"
이럴땐 JSON.parse()를 이용해주자
JSON.parse()를 이용하면 주석처리된것과 같은 형식이 나오게된다.
const test_json = "{\"a\": \"a-data\", \"b\": \"b-data\", \"c\": \"c-data\", \"d\": \"d-data\"}";
console.log(JSON.parse(test_json));
// { a: 'a-data', b: 'b-data', c: 'c-data', d: 'd-data' }
사용할땐 아래와 같이 변경하여 사용하면 된다.
const select = "SELECT test_json FROM TABLE";
route.get('/', (req, res) => {
pool.query(select, (err, result) => {
if(err){
logger.error(err);
throw err;
}
let results = result.map(row => ({...row, test_json : JSON.parse(row.test_json) })
);
res.status(200).send(results);
})
}
추가로 배열로 바꾼다면 아래와같이 Object.keys() 를 이용해서 사용할 수 있다.
const test_json = "{\"a\": \"a-data\", \"b\": \"b-data\", \"c\": \"c-data\", \"d\": \"d-data\"}";
console.log(JSON.parse(test_json));
//{ a: 'a-data', b: 'b-data', c: 'c-data', d: 'd-data' }
Object.keys(JSON.parse(test_json)).map((key) => {
console.log(`key: ${key}, value: ${JSON.parse(test_json)[key]}`);
});
/*
key: a, value: a-data
key: b, value: b-data
key: c, value: c-data
key: d, value: d-data
*/