mongoose(10)
-
MySQL과 MongoDB 비교
MySQL MongoDB 관계형 다큐먼트형 모델 스키마 테이블 컬렉션 로우 다큐먼트 컬럼 필드 include aggregate(populate - ref) ASC .sort({ 필드명: 1 }) DESC .sort({ 필드명: -1 }) Op.gt , Op.ne , ... $gt: , $ne: , ... 데이터베이스명.update({바꾼 후 모양, where: {조건}}) 데이터베이스명.update({})
2020.10.27 -
axios 400 POST error : Mongoose를 다룰 때 new 키워드를 조심하자
사용자로부터 입력받은 Form 데이터를 mongoose로 연동한 MongoDB에 저장하려고 할때, axios가 POST 400 에러를 토해냈다. 한참 모니터와 눈싸움하며 고민한 결과 나도 모르게 new 키워드를 집어넣었던 것이다. mongoose에서 new 키워드를 사용하는 경우는 스키마를 생성할 때이다. 조심하도록 하자! export const saveStudent = async (req, res) => { const { params: { id }, body: { name }, user, } = req; try { const major = await Major.findById(id); // 밑에 await new Student.create()로 써서 안됐던 것! const newStudent = awa..
2020.07.17 -
[Mongoose] 특정 필드만 Read하기
모델이름.find({"필드이름": {$ne: null}}, function (err, result) { if (err) { console.log(err); } else { if (result) { res.render("ejs파일이름", {ejs에서불러올키값: result}); } } }) 위 코드를 .get() 라우트 내에서 처리하면 된다. {$ne: null}은 해당 필드이름 중 null이 아닌 것을 가져오는 쿼리이다.
2020.05.18 -
[Mongoose REST API] PATCH와 body-parser, 그리고 HTML의 name과 value
PATCH는 클라이언트가 업데이트 하고자 하는 필드만을 공략해주는 메서드다. 이때 클라이언트가 "글의 내용을 'Hello'로 업데이트해주세요"에 해당하는 것이 app.patch() 메서드 내의 {$set: {title: "Hello"}} 인자이다. https://mongoosejs.com/docs/api/model.html#model_Model.update Mongoose v5.9.14: Parameters doc «Object» values for initial set optional «[fields]» object containing the fields that were selected in the query which returned this document. You do not need to se..
2020.05.15 -
[Mongoose REST API] PUT, PATCH : 업데이트 & {overwrite: true}란?
PUT PATCH 용도 선택된 항목(URL)에 해당하는 {} 객체를 통째로 업데이트하기 선택된 항목(URL)에 해당하는 {} 객체 내 특정 필드를 업데이트하기 방법 모델이름.update( {조건필드이름:그값}, {overwrite:true}, 에러처리콜백함수 ) 모델이름.update( {조건필드이름:그값}, {$set: {바꿀필드이름:바꾼후값}, ... }, 에러처리콜백함수 ) 주의 PUT에서는 overwrite 인자를 사용해야 한다. PATCH에서는 set 인자를 사용해야 한다. PATCH는 원래 존재목적 자체가 원하는 특정 필드만을 골라서 업데이트하기 때문에, {$set: {}} 인자가 필요한 것이 이해가 된다. 그런데 PUT에서 {overwrite: true} 인자는 왜 필요할까? 이 인자가 없는 ..
2020.05.15 -
[Mongoose] db.~.find() VS db.~.findOne()
결과 쿼리 비교 상황 find : 여러 {} 객체로 이루어진 [] 배열을 반환 findOne : 하나의 {} 객체를 반환 파라미터로 조건 쿼리가 없을 때 모든 Document들을 반환 모든 Document들 중 가장 첫 번째만 반환 파라미터로 조건 쿼리가 있으며, 해당 조건을 만족하는 Document가 여러 개 조건을 만족하는 Document를 반환 조건을 만족하는 Document 중 가장 첫번째만 반환 파라미터로 조건 쿼리가 있지만, 해당 조건을 만족하는 Document가 0개일 때 아무 일도 일어나지 않음 null 반환
2020.05.13