mongoDB
-
MongoDB populateToday I Learned 2020. 1. 9. 18:07
문제 SQL의 JOIN 문과 같이 참조 collection의 정보를 조회해야 한다. 해결 mongodb에서 제공하는 populate 메소드를 이용해 collection 안에 다른 collection 정보들을 함께 담아서 전송할 수 있다. model/Board.js 참조할 속성에는 'ref'를 이용해 표시해야 한다. 그래야 어떤 모델을 참조할지 알 수 있다. routes/Boards/index.js find() 메소드 후에 populate 메소드를 실행하고, 입력 인자 안에는 참조에 필요한 속성명을 넣는다. 출처 https://mongoosejs.com/docs/populate.html Mongoose v5.8.5: Query Population Populate MongoDB has the join-lik..
-
getQueryToday I Learned 2020. 1. 8. 17:25
문제 미들웨어 구현 도중에 this 키워드로 값들을 불러오지 못한 오류가 발생했다. 해결 미들웨어를 적용할 함수들 중에서 이미 생성한 Schema 객체를 이용하는 것이 있고, 객체 안의 메소드만을 사용하는 것이 있다. 이미 생성한 객체를 이용할 경우, this 키워드로 값을 빼올 수 있지만, 객체 안의 메소드만을 사용할 경우, thisr가 아닌 getQuery를 이용해 함수의 입력 인자들을 받아서 사용할 수 있다. model/Likes.js 이 코드가 첫 번째 케이스이다. this 키워드로 전부 해결할 수 있다. 이 코드는 두 번째 케이스로 getQuery로 해결했다.
-
mongoose middleware 제작Today I Learned 2020. 1. 8. 17:16
문제 다른 document의 내용을 manual reference 통해 참조하는 방법을 채택하고 프로젝트를 진행했다. 그러나, 어떤 document가 삭제되었을 때, 이것을 참조하는 document에서는 cascade 하게 삭제되지 않는 문제가 발생했다. 해결 stackoverflow에서 비슷한 사례들을 찾아본 결과, 자체적으로 연쇄적으로 지워주는 기능을 수행하는 미들웨어를 제작하는 방법으로 해결했다. 그래서 model 폴더에 존재하는 각각의 파일들에 미들웨어를 제작해 사용했다. model/Comment.js 위의 코드는 getQuery를 통해 함수의 입력 파라미터를 받고, 두 번의 query를 이용해 User, board document에 필요없는 _id 값을 삭제하는 기능을 수행하는 미들웨어이다. 출..