Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Validación UTF-8

En esta guía, puede aprender cómo activar o desactivar la funcionalidad de validación UTF-8 del driver Node.js. UTF-8 es una especificación de codificación de caracteres que garantiza la compatibilidad y una presentación coherente en la mayoría de los sistemas operativos, aplicaciones y conjuntos de caracteres de idiomas.

Si habilita la validación, el controlador genera un error al intentar convertir datos que contienen caracteres UTF-8 no válidos. La validación añade una sobrecarga de procesamiento, ya que necesita verificar los datos.

Si deshabilita la validación, su aplicación evita la sobrecarga del procesamiento de validación, pero no puede garantizar la presentación consistente de datos UTF-8 no válidos.

De forma predeterminada, el controlador habilita la validación UTF-8 en los datos de MongoDB. Al analizar los datos enviados desde MongoDB a su aplicación, comprueba si los documentos entrantes contienen caracteres que no estén codificados en un formato UTF-8 válido.

Nota

Esta versión del controlador Node.js sustituye automáticamente los valores no válidos. reemplazos únicos con el carácter de reemplazo antes de la validación cuando envía datos a MongoDB. Por lo tanto, la validación sólo arroja un error cuando la configuración está habilitada y el driver recibe datos de documento UTF-8 no válidos desde MongoDB.

Lea las secciones a continuación para aprender cómo configurar la validación UTF-8 usando el controlador Node.js.

Se puede especificar si el controlador realiza la validación UTF-8 definiendo la enableUtf8Validation estableciendo en el parámetro de opciones cuando se crea un cliente, se hace referencia a una base de datos o colección, o se ejecuta una operación CRUD. Si omites la configuración, el controlador habilita la validación UTF-8.

Consulta lo siguiente para obtener ejemplos de código que demuestren cómo desactivar la validación UTF-8 en el cliente, base de datos, colección u operación 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 });

Si tu aplicación lee UTF-8 inválido de MongoDB mientras la opción enableUtf8Validation está activada, lanza un BSONError que contiene el siguiente mensaje:

Invalid UTF-8 string in BSON document

La configuración enableUtf8Validation se aplica automáticamente al ámbito de la instancia del objeto en el que la incluyó y a cualquier otro objeto creado por llamadas en esa instancia.

Por ejemplo, si incluye la opción en la llamada para instanciar un objeto base de datos, cualquier instancia de colección que cree a partir de ese objeto heredará la configuración. Cualquier operación que llames en esa instancia de colección también hereda la configuración.

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

Puedes anular la configuración en cualquier nivel de alcance incluyéndola al construir la instancia del objeto o al llamar a una operación.

Por ejemplo, si deshabilitas la validación en el objeto de colección, puedes anular la configuración en llamadas individuales de operaciones CRUD en esa colección.

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

Volver

Valores indefinidos

En esta página