728x90
반응형
JavaScript로 객체를 합치는 방법을 찾고 있었습니다.
가장 간단한 방법인 Spread Operator를 이용했지만 생각과 다른 결과값이 나와 당황했어요.
{
"result": 100,
"data": {
"$__": {
"activePaths": {
"paths": {
...
},
"states": {
"ignore": {},
"default": {},
"init": {
...
},
"modify": {},
"require": {
...
}
},
"stateNames": [
"require",
"modify",
"init",
"default",
"ignore"
]
},
"skipId": true,
"strictMode": true,
"selected": {
...
},
"fields": {
...
},
"exclude": false
},
"$isNew": false,
"_doc": {
...
}
}
}
정말 이상한 것이 나오지 않았나요?
분명 콘솔로 찍어보면 제가 원하는 값이 나오는데 이 아이를 분해해서 합칠려고 하니 이상한 값이 나왔습니다.
알고보니 이 형태는 Mongoose Document 형태라고 합니다!
그동안 알고 있던 것과 달리 많은 정보를 가지고 있네요.
이럴때 lean() 메소드를 사용해서 데이터를 JavsScript Object로 바꿔주면 됩니다.
const user = await User.findOne({ name }).lean();
끝쪽에 .lean() 메소드를 쓰면 user는 객체가 되어 손쉽게 분해하고 조립할 수 있습니다.
공식문서 : https://mongoosejs.com/docs/tutorials/lean.html
728x90
반응형
댓글