hice esto para guardar algo de información en un archivo y leer línea por línea usando el módulo de nodo readline
hay dos res.send() uno es con return . solo regresa dentro de la función actual en la que está sentado. ¿Cómo salgo completamente de las funciones?
esto solo para una prueba. Sé que debería usar bases de datos
router.post('/login', (req, res) => { console.log(req.body); var lineReader = require('readline').createInterface({ input: require('fs').createReadStream('./users.txt') }); lineReader.on('line', function (line) { const lineJson = JSON.parse(line); if (lineJson["username"] == req.body.username) { if (lineJson["password"] == req.body.password) { return res.send({ msg: "matched" }); } } }) res.send({msg:"not matched"}); })simplificado
function(){ function(){ return... } }Su problema está relacionado con su experiencia con la naturaleza asíncrona de nodejs.
Debe usar el lector de línea en modo asíncrono para sus pruebas:
lineReader.eachLine('file.txt', function(line, last, cb) { console.log(line); if (/* done */) { cb(false); // stop reading } else { cb(); } });O simplemente lea el archivo completo y luego consúltelo como si fuera una tabla sql:
var table = //some asyn read of file if(user-password match){ return res.send({ msg: "matched" }); }else{ return res.send({msg:"not matched"}); }También puede leer el archivo en modo asíncrono (que es mejor) y en la devolución de llamada ejecutar su lógica expresa