Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js

Validação UTF-8

Neste guia, você pode aprender como habilitar ou desabilitar o recurso de validação UTF-8 do driver do Node.js. UTF-8 é uma especificação de codificação de caracteres que garante compatibilidade e apresentação consistente na maioria dos sistemas operacionais, aplicativos e conjuntos de caracteres de idioma.

Se você habilitar a validação, o driver lançará um erro ao tentar converter dados que contenham caracteres UTF-8 inválidos. A validação adiciona sobrecarga de processamento, pois precisa verificar os dados.

Se você desabilitar a validação, seu aplicativo evitará a sobrecarga de processamento de validação, mas não poderá garantir a apresentação consistente de dados UTF-8 inválidos.

Por padrão, o driver habilita a validação UTF-8 em dados do MongoDB. Ele verifica os documentos recebidos em busca de caracteres que não estejam codificados em um formato UTF-8 válido ao analisar os dados enviados do MongoDB para seu aplicação.

Observação

This version of the Node.js driver automatically substitutes invalid lone surrogates with the replacement character before validation when you send data to MongoDB. Therefore, the validation only throws an error when the setting is enabled and the driver receives invalid UTF-8 document data from MongoDB.

Leia as seções abaixo para saber como definir a validação UTF-8 usando o driver Node.js.

É possível especificar se o driver executa a validação UTF-8 definindo a configuração enableUtf8Validation no parâmetro de opções quando você cria um cliente, faz referência a um banco de dados ou collection, ou chama uma operação CRUD. Se você omitir a configuração, o driver habilitará a validação UTF-8 .

Consulte a seguir exemplos de código que demonstram como desabilitar a validação UTF-8 no cliente, banco de dados, coleção ou operação CRUD:

// 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 });

Se seu aplicativo ler UTF-8 inválido do MongoDB enquanto a opção enableUtf8Validation estiver habilitada, ele lançará um BSONError que contém a seguinte mensagem:

Invalid UTF-8 string in BSON document

A configuração enableUtf8Validation se aplica automaticamente ao escopo da instância de objeto na qual você a incluiu e a quaisquer outros objetos criados por chamadas nessa instância.

Por exemplo, se você incluir a opção na chamada para instanciar um objeto de banco de dados, qualquer instância de coleção construída a partir desse objeto herdará a configuração. Todas as operações que você chama nessa instância de coleção também herdam a configuração.

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' });

Você pode substituir a configuração em qualquer nível de escopo incluindo-a ao construir a instância do objeto ou ao chamar uma operação.

Por exemplo, se você desabilitar a validação no objeto de collection, poderá substituir a configuração em chamadas de operação CRUD individuais nessa collection.

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' });

Nesta página