mongoose-auto-increment
참조문서 : https://www.npmjs.com/package/mongoose-auto-increment
시퀀스 넘버키를 편하게 쓸 수 있다. npm install mongoose-auto-increment 를 다운로드받는다.
1. 연결
const connection = mongoose.connect(....)
autoIncrement.initialize(connection);
으로 연결한다. mongoose.connect의 콜백에 autoIncrement.initialize()를 넣으면 Error: mongoose-auto-increment has not been initialized 가 떨어진다.
2. 시퀀스넘버 설정
const logger = new Schema({..})
logger.plugin(autoIncrement.plugin, 'log');
const Logger = mongoose.model('log', logger);
이때 컬렉션명 일치가 중요하다. 이렇게하면 _id가 0부터 순차증가한다.
내부 모듈(index.js) 까보면 초기화할때 컬렉션을 만들고, save이벤트 발생전에 pre로 아래와 같은 로직을 처리한다.
IdentityCounter.findOneAndUpdate( $inc: { count: settings.incrementBy }
몽고 쉘 에서 찾아보면
> db.identitycounters.find()
{ "_id" : ObjectId("5979cf841acc96176446e0ab"), "model" : "log", "field" : "_id", "count" : 3, "__v" : 0 }
3. 이외 옵션
API문서보면 인덱스 시작 숫자 변경, 증가수 변경, 필드 설정등이 가능하다.
bookSchema.plugin(autoIncrement.plugin, {
model: 'Book',
field: 'bookId',
startAt: 100,
incrementBy: 100
});
출처: https://sjh836.tistory.com/105?category=710138 [빨간색코딩]
'JavaScript BackEnd > Node.js, Express' 카테고리의 다른 글
body-parser 모듈 (urlencoded, extended 옵션) (0) | 2021.03.18 |
---|---|
nodejs의 내부 동작 원리 (libuv, 이벤트루프, 워커쓰레드, 비동기) (0) | 2021.03.18 |
V8 inspector을 이용한 디버깅 (0) | 2021.03.18 |
nodejs 메모리 누수 (0) | 2021.03.18 |
Mongoose 모듈 (mongodb와 혼용, 연결, 스키마, 타입, 모델, CRUD) (0) | 2021.03.18 |
libuv (개념, 아키텍처, 이벤트루프, 쓰레드풀) (0) | 2021.03.18 |
워커 쓰레드풀 확장을 통한 성능튜닝 (process.env.UV_THREADPOOL_SIZE) (0) | 2021.03.18 |
request 모듈 (0) | 2021.03.18 |