Node.js + Express:文件结构和通信

时间:2017-04-19 19:57:13

标签: javascript node.js express

我有一个登录应用程序但是我无法将表单(emailpassword)的凭据传递给我现有的.js文件,在那里它执行一些逻辑并检索一些资讯

在我的login页面上,我有formPOST方法。然后,我有main.js执行登录:

main.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我在其中检索已记录用户的一些信息:

index.js

var authToken = require("./main");

authToken.returnSessionToken((result) => {
   'my_website_token': result,
   [...]
}

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

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

app.js

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

然后,

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

但没有成功。 任何帮助将非常感谢。谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

见下面的例子:

<强> index.js

var express = require('express');
var login = require('./login');
var app = express(); 

app.use('/login', login); // mount the sub app

<强> login.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;

答案 1 :(得分:0)

为了将来参考,这是一个有效的例子。谢谢Ryan Villanueva的帮助!

<强> main.js

module.exports = {
  returnSessionToken: function(email, pwd, success, fail) {

    var email = email;
    var pwd =  pwd;
    success(token)
    [...]
}

<强> index.js

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

<强> app.js

var myaccount = require('./routes/myaccount');
app.use('/myaccount', 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;