节点.js+快递:文件结构和通信



我有一个登录应用程序,但我无法将表单(emailpassword)的凭据传达到我现有的.js文件,它在其中执行一些逻辑并检索一些信息。

在我的login页面上,我有一个带有POST方法的form。然后,我有一个执行登录的main.js

主.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)
}

然后我有一个index.js,我可以在其中检索登录用户的一些信息:

索引.js

var authToken = require("./main");
authToken.returnSessionToken((result) => {
'my_website_token': result,
[...]
}

在我的express项目中,我将这两个文件放在一个js文件夹中。我正在尝试做的是获取登录页面form的电子邮件和密码并将其传递给我的main.js文件(email_Xpassword_Y),然后调用index.js。我知道如何获取routes文件夹中的req.body.emailreq.body.password,但无法弄清楚如何使这些文件进行通信。

我还尝试将app.js文件编辑为:

应用.js

var login = require('./js/main');

然后

app.use('/myaccount', login);

但没有成功。 任何帮助将不胜感激。谢谢!

我对细节和看起来缺少一些步骤感到有些困惑,但看起来问题可能是由您设置和引用主模块的方式引起的.js。

app.use('/myaccount', login)将向主模块发送两个对象.js通常称为 req 和 res.req 包含有关 HTTP 请求的信息。我相信来自表单HTTP帖子的数据是在req.body中发送的。

请参阅以下示例:

索引.js

var express = require('express');
var login = require('./login');
var app = express(); 
app.use('/login', login); // mount the sub app

登录.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;

为了将来参考,这里有一个工作示例。谢谢瑞安·维拉纽瓦的帮助!

主.js

module.exports = {
returnSessionToken: function(email, pwd, success, fail) {
var email = email;
var pwd =  pwd;
success(token)
[...]
}

索引.js

module.exports = {
returnUserData: function(authToken, success) {
[...]
'my_website_token': authToken,
}

应用.js

var myaccount = require('./routes/myaccount');
app.use('/myaccount', myaccount);

路由/我的帐户.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;

最新更新