-
Mongoose에서 Array 내용 수정 후 .save()를 호출해도 동작하지 않는 현상NodeJS 2021. 1. 10. 04:24728x90
Mongoose에서 Array 내용 수정 후 .save()를 호출해도 동작하지 않는 현상
다음과 같은 mongo Model이 존재 할때,
const mongoose = require('mongoose'); const { Schema } = mongoose; const Confirm = new Schema({ type: { type: String, require: true, index: true }, pgm_id: { type: Number, require: true, index: true }, confirm: { type: Array, index: true }, brd_dtm: { type: Date, require: true, index: true }, }, { timestamps: true }); module.exports = mongoose.model('Confirm', Confirm);
다음과 같은 데이터가 있다고 가정했을때,
{ type: 'A', pgm_id: 1234, confirm:[0,0,0], brd_dtm: ISODate("2020-11-26T05:51:37.970Z") }
모델을 조회 후 수정하였고, 저장했다.
const result = await Confirm.findOne({pgm_id: '1234'}); result.confirm[3] = 10; await result.save(); console.log(await Confirm.findOne({pgm_id: '1234'}));
결과는 데이터가 변경되지 않습니다.
Array의 경우 수정을 하고 저장을 해도 처리가 되지 않습니다.
단 Array를 새로 만들어서 넣을 경우는 반영됩니다.하지만 매번 Array를 새로 만들기 보다 쉽게 하는 방법은 다음과 같습니다.
const result = await Confirm.findOne({pgm_id: '1234'}); result.confirm[3] = 10; //변경된 사항을 강제 처리 result.markModified('confirm'); await result.save();
이렇게 하는 방식도 있다!
참고자료
728x90'NodeJS' 카테고리의 다른 글
Nestjs tutorial (0) 2021.01.11 typeorm에서 merge 예제 (0) 2021.01.11 nestjs에서 passport를 이용해서 로그인 하는 기능을 확인해보았습니다. (0) 2021.01.09 JS] typeof를 이용해서 선언되지 않은 변수 확인 (0) 2021.01.09 Node express에서 Content Security Policy(CSP) 처리 하기 (0) 2021.01.08