문서 메뉴
문서 홈
/ / /
Node.js 드라이버
/ /

UTF-8 유효성 검사

이 페이지의 내용

  • 개요
  • UTF-8 유효성 검사 설정 지정
  • 유효성 검사 범위 설정

이 가이드에서는 Node.js 드라이버의 UTF-8 유효성 검사 기능을 활성화하거나 비활성화되도록 설정하는 방법을 알아볼 수 있습니다. UTF-8 은 대부분의 운영 체제, 애플리케이션 및 언어 문자 집합에서 호환성과 일관된 표현을 보장하는 문자 인코딩 사양입니다.

유효성 검사를 활성화하면 드라이버가 유효하지 않은 UTF-8 문자가 포함된 데이터를 변환하고자 하는 경우 오류가 발생합니다. 유효성 검사는 데이터를 확인해야 하기 때문에 처리 오버헤드를 추가합니다.

유효성 검사를 비활성화 하는 경우 애플리케이션은 유효성 검사 처리 오버헤드를 방지하지만 유효하지 않은 UTF-8 데이터의 일관된 표시를 보장할 수 없습니다.

드라이버는 디폴트로 UTF-8 유효성 검사를 활성화합니다. 애플리케이션과 MongoDB 간에 데이터를 전송하는 경우 유효한 UTF-8 포맷으로 인코딩되지 않은 문자가 있는지 문서를 확인합니다.

참고

현재 버전의 Node.js 드라이버는 데이터를 MongoDB에 보낼 때 유효성 검사 전에 유효하지 않은 UTF-8 문자를 유효한 대체 UTF- 문자로 자동 대체합니다. 따라서 유효성 검사는 설정이 활성화되어 있고8 8 드라이버가 MongoDB에서 잘못된 UTF- 문서 데이터를 수신하는 경우에만 오류가 발생합니다.

아래 섹션을 참조하여 Node.js 드라이버를 사용하여 UTF-8 유효성 검사를 설정하는 방법을 학습합니다.

클라이언트를 만들거나 데이터베이스 또는 컬렉션을 참조하거나 CRUD 작업을 호출할 때 옵션 매개변수에 enableUtf8Validation 설정을 정의하여 드라이버가 UTF-8 유효성 검사를 수행할지 여부를 지정할 수 있습니다. 이 설정을 생략하면 드라이버에서 UTF-8 유효성 검사를 활성화합니다.

클라이언트, 데이터베이스, 컬렉션 혹은 CRUD 작업에서 UTF-8 유효성 검사를 비활성화하는 방법을 보여주는 코드 예제의 경우 다음을 참조합니다.

// disable UTF-8 validation on the client
new MongoClient('<connection uri>', { enableUtf8Validation: false });
// disable UTF-8 validation on the database
client.db('<database name>', { enableUtf8Validation: false });
// disable UTF-8 validation on the collection
db.collection('<collection name>', { enableUtf8Validation: false });
// disable UTF-8 validation on a specific operation call
await myColl.findOne({ title: 'Cam Jansen'}, { enableUtf8Validation: false });

옵션이 활성화된 상태에서 애플리케이션이 MongoDB에서 잘못된 UTF-8을 읽으면 enableUtf8Validation BSONError 다음과 같은 메시지가 표시됩니다.

Invalid UTF-8 string in BSON document

enableUtf8Validation 설정의 경우 해당 설정이 포함된 객체 인스턴스의 범위와 해당 인스턴스의 호출로 생성된 기타 모든 객체에 자동으로 적용됩니다.

예를 들어 데이터베이스 객체를 인스턴스화하는 옵션을 호출에 포함하는 경우 해당 객체에서 구성하는 모든 컬렉션 인스턴스가 설정을 이어받습니다, 해당 컬렉션 인스턴스에서 호출하는 모든 작업도 설정을 이어받습니다,

const database = client.db('books', { enableUtf8Validation: false });
// The collection inherits the UTF-8 validation disabled setting from the database
const myColl = database.collection('mystery');
// CRUD operation runs with UTF-8 validation disabled
await myColl.findOne({ title: 'Encyclopedia Brown' });

모든 범위 수준에서 객체 인스턴스를 생성하거나 작업을 호출하는 경우 설정을 포함하여 설정을 재정의할 수 있습니다.

예를 들어 컬렉션 객체에서 유효성 검사를 비활성화하는 경우 해당 컬렉션에 대한 개별 CRUD 작업 호출에서 설정을 재정의할 수 있습니다.

const collection = database.collection('mystery', { enableUtf8Validation: false });
// CRUD operation runs with UTF-8 validation enabled
await myColl.findOne({ title: 'Trixie Belden' }, { enableUtf8Validation: true });
// CRUD operation runs with UTF-8 validation disabled
await myColl.findOne({ title: 'Enola Holmes' });
← 정의되지 않은 값