Search

Game Rankers

Lastest Comments

I
게시판 - 파일첨부 기능 만들기 4 (수정/삭제)
1. { $match: {_id:req.params.id}} 현재 index페이지를 작업하고 계신데 이렇게 바꿔버리면 게시판리스트에 게시물이 하나밖에 안보이겠죠? 이부분은 테스트를 하기 위해 이렇게 바꾸신거 같은데 혹시나 해서 알려드립니다. 2. { $unwind: { path: '$author', //추가 select: '$username' //추가 } }, ... { $unwind: { path: '$attachment', match: {isDeleted:false}, //추가 preserveNullAndEmptyArrays: true } }, unwind에 select, match을 추가하셨는데, 사실 unwind는 select 항목이나 match 항목이 없습니다. 어떤 항목들을 쓸 수 있는지는 공식 문서를 읽어보면 알 수 있어요. 구글에 'mongodb aggregate $unwind'와 같이 검색하시면 mongodb.com의 '$unwind (aggregation) — MongoDB Manual' 문서가 가장 먼저 뜨는데, 이처럼 mongodb.com의 문서이고 MongoDB Manual가 들어간 문서가 mongo db 공식 설명서 입니다. 이 문서를 보시면 사용할 수 있는 항목은 path: <field path>, includeArrayIndex: <string>, preserveNullAndEmptyArrays: <boolean> 요 세가지 뿐입니다. 각각의 항목이 무슨일을 수행하는지도 명확히 설명되어 있죠. 이처럼 공식 문서 찾고 읽는 연습도 프로그래머에게 아주 중요합니다. 현재 올바른 방향으로 가고 계시고, 혼자서 할 수 있을 것이라고 생각되서 한번 더 숙제를 내드릴게요. 먼저 aggregate의 첫번째 명령인 $match만 남기고 나머지를 다 지운 후 post[0]의 값을 확인합니다. 아래와 같이 코드가 바뀌겠죠 posts = await Post.aggregate([ { $match: searchQuery }, ]).exec(); console.log(post[0]); // 혹은 https://www.a-mean-blog.com/ko/blog/단편강좌/_/node-js-디버깅-방법 으로 여기에 break point 생성 후 post[0]값 확인 다음으로 aggregate의 두번째 명령어까지 남기고 post[0]의 값을 다시 확인합니다. posts = await Post.aggregate([ { $match: searchQuery }, { $lookup: { from: 'users', localField: 'author', foreignField: '_id', as: 'author' } }, ]).exec(); console.log(post[0]); // 혹은 https://www.a-mean-blog.com/ko/blog/단편강좌/_/node-js-디버깅-방법 으로 여기에 break point 생성 후 post[0]값 확인 이런식으로 각각의 aggregate 명령어가 post를 어떤 식으로 변경하는지를 확인해 보세요. 참고로 { $match: searchQuery }, { $sort : { createdAt: -1 } }, { $skip: skip }, { $limit: limit } 은 post 오브젝트를 변환하는게 아니라 posts 배열 속 post 오브젝트들을 정렬하거나 선택하는 명령어로 post 오브젝트 자체는 바뀌지 않습니다. 나머지 명령어들은 post 오브젝트의 형태나 값이 반드시 한군데 이상 변합니다. 잘 살펴보세요. 이러한 방법으로 각각의 명령어가 post를 정확히 어떤식으로 바꾸는지 확인하시면서 최종적으로는 KWANGJE MOON 님께서 필요하신 post.attachment.serverFileName, post.attachment.originalFileName 를 표시할 수 있게 코드를 변경해 보시기 바랍니다. 할 수 있어요^^ 화이팅!
05/17/2021
I
기본 REST API 만들기
붙여넣기 하신 코드를 잘 보시면 db에서 히어로 모두를 가져오는 것이 아니고, Hero.findOne({})함수를 써서 히어로 하나만 가져옵니다. .sort({id: -1}) 로 내림차순으로 정렬하였고 첫번째 히어로를 가져왔으니 해당 히어로의 id가 db상의 가장 큰 수인 id가 되는 것이죠. 참고로 Hero.findOne({}).sort({id: -1}) 처럼 findOne이 먼저 오고 sort가 뒤에 오더라도 정렬을 먼저하고 값을 가져옵니다.
05/17/2021
mongoDB Atlas 가입 방법(무료 mongo DB 클라우드 서비스)
안녕하세요. 다른 강의에서도 질문을 여럿 남겼었는데 궁금한 점이 있어서 또 들렸습니다. 친구와 프로젝트겸 ios 앱 개발이 마무리 단계에 접어들면서, 서버도 호스팅하고 디비도 업그레이드를 하려고 합니다. 현재 개발하면서 테스트는 로컬 서버 + 몽고 아틀라스 무료티어를 이용했습니다. 디비를 업데이트하고 데이터를 받아오는 통신이 느린 부분이 몽고 아틀라스 무료티어의 문제라는 이야기를 접해서 M10으로 업그레이드를 하려고 합니다. 처음이라 많이 헷갈리는데, 서버는 aws에 호스팅을 하려고 했는데 다른분께서 'mongodb 아틀라스무료티어 있는데 왜 ec2를..'라는 말씀을 하셔서요. 아틀라스에 서버까지 호스팅이 가능하다는 의미일까요? 저랑 친구는 aws에 호스팅 + mongodb 아틀라스 업그레이드 이렇게 생각하고 있는데 맞는 방향일까요??
05/17/2021
K
게시판 - 파일첨부 기능 만들기 4 (수정/삭제)
aggregate개념을 보니 전보다는 확실히 이해가 되는것같습니다. posts = await Post.aggregate([ { $match: {_id:req.params.id}}, //추가 { $lookup: { from: 'users', localField: 'author', foreignField: '_id', as: 'author' } }, { $unwind: { path: '$author', //추가 select: '$username' //추가 } }, { $sort : { createdAt: -1 } }, { $skip: skip }, { $limit: limit }, { $lookup: { from: 'comments', localField: '_id', foreignField: 'post', as: 'comments' } }, { $lookup: { from: 'files', localField: 'attachment', foreignField: '_id', as: 'attachment' } }, { $unwind: { path: '$attachment', match: {isDeleted:false}, //추가 preserveNullAndEmptyArrays: true } }, { $project: { title: 1, price: 1, author: { username: 1, }, views: 1, numId: 1, attachment: { $cond: [{$and: ['$attachment', {$not: '$attachment.isDeleted'}]}, true, false] }, createdAt: 1, commentCount: { $size: '$comments'} } }, ]).exec(); 조언해주시면 감사하겠습니다ㅠㅠ
05/16/2021
K
게시판 - 파일첨부 기능 만들기 4 (수정/삭제)
선생님 100% 공감합니다!! aggregate함수 이해후에 한번 다시 도전해보겠습니다. 감사합니다!!
05/16/2021

Lastest Posts

- Text Game Maker JS / Games : 2048 01/19/2018
- Text Game Maker JS / Games : Hanoi Tower 12/21/2017
- Text Game Maker JS / Games : Tetris 11/01/2017
- Text Game Maker JS : Text Game Maker JS 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial OOP 5 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial OOP 4 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial OOP 3 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial OOP 2 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial OOP 1 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial 5 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial 4 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial 3 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial 2 11/01/2017
- Text Game Maker JS / Tutorials : Game Tutorial 1 11/01/2017
- Text Game Maker JS / Tutorials : Introduction 11/01/2017
- Text Game Maker JS / Documentations : TM.IProgram 11/01/2017
- Text Game Maker JS / Documentations : TM.ILoopObject 11/01/2017
- Text Game Maker JS / Documentations : TM.IObject 11/01/2017
- Text Game Maker JS / Documentations : TM.DebugManager 11/01/2017
- Text Game Maker JS / Documentations : TM.InputManager_Keyboard 11/01/2017
UP