Estoy tratando de implementar múltiples funciones de búsqueda, como nombre de usuario e Id de usuario con entradas separadas para nombre de usuario e Id de usuario. Si doy un nombre de usuario como "Dave Steve" o "dave steve" o "Dave" o "steve" o "dav" y hago clic en el botón de búsqueda, debería obtener el resultado. Pero cuando doy "Dave steve" funciona bien pero no con otro caso ¿Cómo lo implemento?
datos json:
let logData={ "dataLog": [ { "userId":"1", "userName":"Dave Steve", }, { "userId":"2", "userName":"John Doe", } ], }Aquí está mi código
app.get('/getData', (req, res) => { let accessData= logData.dataLog; let userName = req.query.userName; let userId = req.query.userId; console.log(userName, userId) let filterData = accessData.filter((data) => { return (userId === undefined || data.userId === userId) && (userName === undefined || userName === userNameData) }) console.log(filterData) const response = { header: getSuccessHeader, body: filterData }; res.status(200); res.send(response); });Por favor pruebalo
app.get('/getData', (req, res) => { let accessData= logData.dataLog; let userName = req.query.userName; let userId = req.query.userId; console.log(userName, userId) let filterData = accessData.filter((data) => { return (userId === undefined || data.userId === userId) && (userName === undefined || userName.toLowerCase().includes(userNameData.toLowerCase())) }) console.log(filterData) const response = { header: getSuccessHeader, body: filterData }; res.status(200); res.send(response); });Es porque Dave Steve no es realmente igual a Dave steve cuando compara cadenas usando === . Es sensible a mayúsculas y minúsculas.
Puede usar .toLowerCase() tanto para userName como para userNameData al comparar los dos.
Entonces su comparación se vería así:
userName.toLowerCase() === userNameData.toLowerCase()EDITAR:
Pasé por alto por completo que quieres una comparación parcial de cadenas. Por lo tanto, debería usar .includes(string) en su lugar.
userName.toLowerCase().includes(userNameData.toLowerCase())Aquí hay un enlace de stackblitz implementado para usted, revíselo.
La comparación debe ocurrir con ambos casos con una declaración o:
userName.toLowerCase() === data.userName.toLowerCase() || userName.toLowerCase().indexOf(data.userName.toLowerCase()) === -1