Closed hunter-hwang-dev closed 3 weeks ago
그러면 내가! 기계라고 생각해 보자. 재봉틀 바늘을 떠올리고 한 글자 한 글자 확인하며 어디서 잘라야 할 지 판단해 보자구. 더 복잡하게 파싱할 수도 있지만 이게 제일 빠르고 간단하겠지? 가장 효율적인 방식이 먹힌다면 더 생각할 필요도 없다.
아까 가져왔던 3종류의 documents 케이스를 단순/간략화해 보자.
{
"question": "질문",
"answer": "답변, 답변, 답변.",
"hashtags": "#해시태그 #해시태그"
},
{
"question": "질문: 질문",
"answer": 답변",
"hashtags": "#해시태그",
"createdAt": "1970-01-01",
"revisedAt": "",
"related-tips": "다른 질문의 question값"
},
{
"question": "질문",
"answer": "답변" + "답변 답변, 답변" +
"답변 답변" +
"답변."
"hashtags": "#해시태그 #해시태그"
"createdAt": "1970-01-01",
"revisedAt": "",
"related-tips": ""
},
아니, 변수가 너무 많다. 나는
"따옴표로 표시된 String"
안에 들어가지 않는,
를 기준으로 끊으면 될 줄 알았어.그런데 컴파일된 코드는 String을 구분하지만, 통짜 JSON을 파싱하려면 어느 "
가 시작이고 어느 "
가 끝인지도 구분지어야 한다. 복잡하다.
그럼 결론: 수동 입력하는 것이 차라리 인력이 적게 들 것이다!
JSON 파싱은 개발 블로그 개발을 하다 보면 언젠가는 쓸 것이다. 간단한 파싱은 이미, 하나의 document에 달린 여러 해시태그가 하나의 String에 담겨 있기에 어차피 해야 한다.
엥, MongoDB 형식 그대로니까 그냥 { } 단위로 끊으면 될 것 같은데?
다시 해보자!
ChatGPT의 도움을 받고 있다. JSON 파일로 변환하면 파싱하는 데 장점이 있나 보다.
그러나 JSON 파일은, JS 내 JSON object (꺽쇄 괄호로 묶는 거 object 맞아? js 문법 헷갈려) 완 달리 string 더하기가 되지 않는다.
그리 많진 않으므로 일일이 합쳐 주겠다.
오 이런. 그렇게는 못 하는가 보네.
오예! 잘 들어갔다. 이게 되네? 아주 쉽게 되는군! db 수기로 작성할 때 json 형식을 추천한 이유가 다 있었구나.
수동 입력(노가다)를 해 보니, 웹페이지에서 document 추가하는게 너무 느리고 답답, 불편함 > 차라리 코드 쓰자. 이렇게 결정한 이유.
266줄짜리 js 코드. 사실 코드랄 것도 없고 하나의 json const가 벌크로 뚝. 하니 놓여져 있다. DB를 잘 모를 때에 이렇게 작성했다. 하하! 파싱하기는 좋겠다. 각각의 {중괄호}가 MongoDB 상의 document가 되도록 할 것이다.
맨날 헷갈리니까 이미지로 보자. database라는 책꽂이에 collection이라는 수첩이 있고, document라는 페이지가 있는 것이다.
그런데, 파싱 시 까다로운 부분은 이렇다. 각각의 item(이라고 해야 할지? js에 안 익숙함)을 적다 보니, 표기법이 조금씩 다르게 됐다.