Cuando se usa regex para permitir la insensibilidad a mayúsculas y minúsculas, solo funciona para cadenas simples. La consulta db no devuelve resultados cuando se utilizan paréntesis u otros caracteres especiales para el nombre .
Ejemplo: "Push It" funcionará bien y devolverá canciones. Sin embargo, al buscar "Escape (The Pina Colada Song)", no devuelve ninguna canción. ¿Cómo puedo hacer que Regex permita estos caracteres especiales?
Cualquier sugerencia seria genial.
const lowercaseName = new RegExp(`^${name}`, 'i') const songs: any = await Song.find({ name: lowercaseName, artist_id })Debe escapar todos los caracteres especiales en la cadena que está enviando. Prueba esto:
const lowercaseName = new RegExp(`^${name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`, 'i') const songs: any = await Song.find({ name: lowercaseName, artist_id })