IT/프로그래밍
[NodeJS] Sequelize에서 JSON 안에 JSON 처리는 어떻게 해?
오.먹.완
2021. 4. 15. 17:02
반응형
간만에 또 이렇게 글을 써 본다.
내용은 매우 간략하지만 처음 경험하는 것이라서 이 부분으로 인해 열심히 삽을 팠다!
사용 라이브러리
Sequelize : 6.6.1
Node: 12.13.1
RDS: MySQL Aurora
위와 같은 환경에서 아래와 같이 테이블을 생성했다.
Schema
sequelize.define(
'test'
{
name: {
type: DataTypes.STRING(10),
allowNull: false,
comment: '테스트 테이블내 컬럼, 이름'
},
contents: {
type: DataTypes.JSON,
allowNull: false,
comment: '테스트 내용',
},
};
위와 같은 스키마를 정의했다는 가정하에 데이터는 아래와 같다.
{
name: '테스트',
contents: {
blog: {
content: 'Sequelize JSON 첫경험',
timestamp: 11111111,
},
more: {
content: '그냥 하나 더~',
timestamp: 12345678
},
};
이런 데이터가 들어갈 것이고 과연 이 JSON 데이터를 업데이트 하고 싶으면 어떻게 할까?
순수 쿼리로 짜는 건 매우 쉽다.
update from test
set contents = JSON_SET(contents, '$_blog', JSON_OBJECT('content', '1234', 'timestamp', 12341234)
where name = '테스트';
이 내용을 Sequelize 에서 제공하는 Sequelize.fn 메서드를 호출해서 적용하려 했는데
JSON_OBJECT 부분이 And 로 작성되는 문제가 생겼다.
시간이 없어서 먼저는
Sequelize.literal(`JSON_SET(contents, '$_blog', JSON_OBJECT('content', '1234', 'timestamp', 12341234)`);
이렇게 처리를 하였으며 매우 정상적으로 해당 키 값에 해당 컬럼 값만 업데이트가 되는 것을 확인했다.
위 JSON_SET, JSON_OBJECT 등에 대해서는 MySQL 지원 함수이니 확인해보고 사용하자!
물론, JSON 을 지원하는 DB 버전이어야 할 것이다..
추가로 이걸 이렇게 찾게되면서 JsonPath
JSONPath 사용법
www.lesstif.com
를 알게 되어 새롭게 공부할 게 생겼다.. 휴우..
반응형