본문 바로가기
Back Side/DBMS > MongoDB

[MongoDB] lean() 메서드로 JavaScript Object 만들기

by developerBeluga 2022. 5. 30.
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

 

Mongoose v6.3.4: Mongoose Tutorials: Faster Mongoose Queries With Lean

The lean option tells Mongoose to skip hydrating the result documents. This makes queries faster and less memory intensive, but the result documents are plain old JavaScript objects (POJOs), not Mongoose documents. In this tutorial, you'll learn more about

mongoosejs.com

 

 

728x90
반응형

댓글