Tengo una aplicación de inicio de sesión, pero tengo problemas para comunicar las credenciales del formulario ( email
y password
) a mis archivos .js
existentes, donde realiza alguna lógica y recupera información.
En mi página de inicio de login
tengo un form
con un método POST
. Luego, tengo un main.js
que realiza el inicio de sesión:
principal.js
module.exports = { returnSessionToken: function(success, error) { var email = email_X; var pwd = password_Y; [...] function(error, response, body) { var login = JSON.parse(body); success(login.sessionToken) }
Y luego tengo un index.js
donde recupero información del usuario registrado:
índice.js
var authToken = require("./main"); authToken.returnSessionToken((result) => { 'my_website_token': result, [...] }
En mi proyecto express
, tengo estos dos archivos en una carpeta js
. Lo que estoy tratando de hacer es obtener el correo electrónico y la contraseña del form
de la página de inicio de sesión y pasarlo a mi archivo main.js
( email_X
y password_Y
) y luego llamar a index.js
. Sé cómo obtener req.body.email
y req.body.password
en la carpeta de routes
, pero todavía no puedo entender cómo hacer que estos archivos se comuniquen.
También he intentado editar el archivo app.js
en:
aplicación.js
var login = require('./js/main');
y entonces,
app.use('/myaccount', login);
Pero sin éxito. Cualquier ayuda será muy apreciada. ¡Gracias!
Estoy un poco confundido por los detalles y lo que parece ser que faltan algunos pasos, pero parece que el problema puede deberse a la forma en que está configurando y haciendo referencia a su módulo main.js.
app.use('/myaccount', login)
enviará dos objetos a su módulo main.js, generalmente denominados req y res. req contiene información sobre la solicitud http. Creo que los datos de una publicación de formulario HTTP se envían en req.body.
Vea el ejemplo a continuación:
índice.js
var express = require('express'); var login = require('./login'); var app = express(); app.use('/login', login); // mount the sub app
iniciar sesión.js
var express = require('express'); var login = express(); login.post('/', function (req, res) { console.log(req.body); // should print your form data // do your login logic here res.status(200).end(); // Sends http response back }); module.exports = login;
Para referencia futura, aquí hay un ejemplo de trabajo. ¡Gracias Ryan Villanueva por la ayuda!
principal.js
module.exports = { returnSessionToken: function(email, pwd, success, fail) { var email = email; var pwd = pwd; success(token) [...] }
índice.js
module.exports = { returnUserData: function(authToken, success) { [...] 'my_website_token': authToken, }
aplicación.js
var myaccount = require('./routes/myaccount'); app.use('/myaccount', myaccount);
rutas/micuenta.js
var express = require('express'); var router = express.Router(); var login = require('../js/main') router.post('/', function(req, res) { var email = req.body.email var password = req.body.password login.returnSessionToken(email, password, (token) => { console.log("return token: ", token) var logged = require('../js/index') logged.returnUserData(token, (myData) => { res.render('myaccount', { myData: myData }); }) }, (fail) => {console.log(fail)}) }) module.exports = router;