IT/MongoDB

JSON.parse() 활용하여 몽고디비 필드 동적 생성

KeepGooing 2021. 4. 11. 12:10
반응형

JSON.parse()

developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

 

JSON.parse() - JavaScript | MDN

JSON.parse() JSON.parse() 메서드는 JSON 문자열의 구문을 분석하고, 그 결과에서 JavaScript 값이나 객체를 생성합니다. 선택적으로, reviver 함수를 인수로 전달할 경우, 결과를 반환하기 전에 변형할 수

developer.mozilla.org

JSON 문자열의 구문을 분석하고, 그 결과에서 JavaScript 값이나 객체를 생성하는 메소드

 

'{"result":true, "count":42}'       ----->  {"result":true, "count":42}

(String(object)로 묶인 json형태의 object에서 String을 벗겨?내주고 json 객체로 만들어준다.)


실무에서 어떻게 사용하는지 보자.

다음과 같이 ``를 활용하여 필드를 동적으로 생성하고 싶을 때 

property key 로 넣었을 때 에러가 발생한다.

const setQ = { $set: { `info.stock.${param.stock}` : param.quantity}    }  (x)

 

따라서 object 전체 `info.stock.${param.stock}` : param.quantity} 를

식별자에 담아 그 식별자를 변수를 활용하는데

이때 String으로 묶인 json Object를 JSON.parse()를 활용하여 json 형태의 object로 바꿔준다.

 

const jsonString = `{ "info.stock.${param.stock}" : param.quantity} `;

const objJson = JSON.parse(jsonString);

 

전체 코드

    async addStock(param) {
        
        const homeInfo = await mongo.dbSetting();

        const filterQ = {keyword:param.keyword};

        const stock = param.stock;
        const quantity = param.quantity;

        const jsonString = `{"info.stock.${stock}" : ${quantity}}`;

        const objJson = JSON.parse(jsonString);

        const setQ = { $set: objJson }

        const updateOneResult = await homeInfo.updateOne(filterQ, setQ);

        return response.UpdateOneResponse(updateOneResult)

    }

 

반응형

'IT > MongoDB' 카테고리의 다른 글

$eq 와 $ne (Operatros/Query and Projection Operators/Comparision Query Operators)  (0) 2021.04.12
$unset (Field Update Operators)  (0) 2021.04.12
몽고디비 - findOneAndUpdate  (0) 2020.06.13
MONGODB - aggregate  (0) 2020.06.13
MONGODB - find  (0) 2020.06.13