반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- CSS
- v-select
- vuejs
- kotlin
- Vuetify
- JavaScript
- error
- electron-nuxt
- 동일 프로세스
- vuetifyjs
- bucket max-key
- naver storage bucket error
- sort
- Vue
- bucket cors
- f035d
- nodejs
- c#
- 프로세스 방지
- Android
- MySQL
- NUXT
- sequelize
- onsen-ui
- xlsx
- 동일 프로그램
- naver storage
- v-text-field height
- onsenui
- Electron
Archives
- Today
- Total
앙큼한 개발기록
sequelize converting circular structure to json 본문
sequelize에서 findAll을 이용하여 model list을 호출해서 map으로 데이터를 돌리고
해당 데이터를 customize 하던 중 해당 에러가 발생했다.
include되어 있는 model을 sequelize를 이용하여 데이터를 object 위로 올릴수 있지만 query 짜는게 복잡하고 조건이 너무 많아 추출하여 데이터를 집어 넣는 과정에서 해당 에러가 발생한다.
해결 방법으로는 해당 데이터를 map으로 돌릴때 data자체를 사용하는게 아닌 data.dataValues를 사용하면 JSON 데이터에 circular structure가 발생하지 않는다.
sequelize에서 include 된 모델은 get set으로 모두 가지고 있는데
외부에서 해당 데이터를 집어 넣거나 둘다 include로 belongsto , hasmany를 가지고 있는 경우
json data가 무한 순환 구조로 반복되어 발생하는 에러 이다.
ex) 사용자와 사용자가 가지고 있는 sns 가 있고 각각의 포인트 정보를 위로 올리는 경우.
(억지로 만든 데이터라서 뭔가 이상하면 알려주세요.)
const User = sequelize.define('user', {
name: DataTypes.STRING,
points: DataTypes.INTEGER
}, {
timestamps: false
});
const SNS = sequelize.define('sns', {
name: DataTypes.STRING,
type: DataTypes.INTEGER,
typeName: {
type: DataTypes.VIRTUAL,
get: function () {
let type = this.getDataValues('type');
switch(type) {
case 0 :
return 'naver'
case 1 :
return 'kakao'
case 2 :
return 'google'
case 3 :
return 'facebook'
default :
return 'none'
}
}
},
point: DataTypes.INTEGER,
}, {
timestamps: false
});
User.hasMany(SNS)
SNS.belongsTo(User)
let userList = User.findAll({
include:{
model: SNS
}
})
userList.map(e => {
// user를 바로 사용 안하고 dataValue를 사용한다.
let userData = e.dataValues
let sns = userData.sns
let user = {
...userData,
sns,
}
// 사용자가 가지고 있는 sns 타입 이름에 포인트를 넣어준다.
sns.forEach(e => {
user[e.typeName] = e.point
})
return user
});
'개발 > nodejs' 카테고리의 다른 글
[node] Data truncated for column '이름' at row 1 (0) | 2022.12.15 |
---|