Tengo debajo del archivo months.txt en el que tengo el contenido:
January February MarchLuego leí el contenido del archivo en una matriz usando el siguiente código:
var data=fs.readFileSync('./months.txt'); data=data.toString().split("\n");Luego envío esta matriz de datos como variable ejs al front-end (la matriz de datos tiene el nombre de todos los meses):
res.render("file.ejs",{months: data}); Estoy usando la matriz de data en el archivo ejs como:
<select name="month"> <option value="<%= months[0] %>">January</option> <option value="<%= months[1] %>">February</option> <option value="<%= months[2] %>">March</option> </select>Cuando el elemento elegido en el menú desplegable anterior se envía al servidor, se imprime el nombre del mes correcto, pero ahora viene el problema. Si selecciono febrero y hago esto:
console.log(req.body.month);// prints February console.log(req.body.month=="February");// prints false¿Cuál podría ser la posible razón detrás de esto? ¡Cualquier sugerencia es bienvenida!
EDITAR : acabo de imprimir una matriz de datos y contiene estos elementos extraños: [ 'January\r', 'February\r', 'March\r' ] ¿Qué es esto \r ? Quizás debido a esta comparación está devolviendo falso.
En las computadoras con Windows, los saltos de línea se indican con \r\n en lugar de \n. Usar .split('\n') probablemente dejaría en \r, lo que hace que la comparación sea falsa.
Cambiar su data.toString().split('\n') a data.toString().split('\r\n') probablemente los eliminaría.
Recomiendo: data.toString().replace('\r','').split('\n')