WEB/JavaScript

[JavaScript][NeDB] Unique Key 설정 방법

S0PH1A 2019. 4. 9. 14:59
반응형

[JavaScript][NeDB] Unique Key 설정 방법


데이터를 insert 할 때 _id 제외한 다른 key 값이 중복되는 것을 막기 위한 unique 설정 방법이다.

 

nedb의 문서를 보면 indexing 부분에 unique 방법이 설명되어 있다.

nedb - indexing

 

만약, `_name` 필드에 unique 설정을 하려면 아래와 같이 선언해 주면 된다.

// local database
const Datastore = require('nedb');
const appDir = app.getPath('userData');

// nedb 파일 생성
const db = new Datastore({
    filename: './nedb.db',
    autoload: true
});

// ex) _name 필드에 Unique Key 설정
db.ensureIndex({ fieldName: '_name', unique: true }, function (err) {
    if (err) console.log(err)
});

 

nedb.db 파일을 보면 자동으로 unique 설정 옵션이 추가된다.

{"$$indexCreated":{"fieldName":"_name","unique":true,"sparse":false}}

 


주의 ! 두 개 이상의 필드를 한번에 indexing 할 수 없다.

[참고] https://github.com/louischatriot/nedb/issues/93

// ex) _name, _title 필드에 Unique Key 설정
db.ensureIndex({ fieldName: ['_name, _title'], unique: true }, function (err) {
    if (err) console.log(err)
});

위와 같이 fieldName 에 리스트로 입력하더라도, _name _title 이(가) 함께 indexing 되지 않고

_name, _title이 각각 unique key 로 선언되어

 

만약 {_name: 'A', _title: '1'} 과 {_name: 'A', _title: '2'} 를 추가할 경우,

`_name`이 'A'로 동일하기 때문에 에러가 발생하게 된다.

 

 

 


[출처] https://github.com/louischatriot/nedb#inserting-documents

반응형