【问题标题】:Passing objects and variables using `require` in `Node.js`在 `Node.js` 中使用 `require` 传递对象和变量
【发布时间】:2015-10-18 15:30:33
【问题描述】:

我正在努力将路由方法从 app.js 转移到单独的文件中。

我设法做到了(在app.js):

var userRoutes = require('./serverRoutes/userRoutes');
app.use('/userRoutes', userRoutes);
app.post('/user/login', userRoutes);

我可以看到路由正在完成。

我的app.js 中有一些变量,例如:
- tokens数组
- jwtSecretKeystring
- jwt 加密模块
- User 这是猫鼬模式

我想通过userRoutes.js 文件中的路由方法传递它们并使其可用。

我不知道该怎么做。

另一个问题。

我还想在不同的“路由”文件中使用一些“帮助”类型的方法。

我也不知道如何通过它们。

这就是我处理“路由”文件的方式:

var express = require('express');
var router = express.Router();

router.post('/user/login', function (request, response) {
    var email = request.body.email;
    var password = request.body.password;

    User.findOne({ email: email, password: password },
        function (err, user) {
            if (err)
                response.send(err);

            if (user) {
                var expires = new Date();

                expires.setDate((new Date()).getDate() + 5);

                var token = jwt.encode({
                    email: email,
                    expires: expires
                }, jwtTokenSecret);

                tokens.push(token);
                response.send(200, { access_token: token });
            } else {
                response.send(401, { message: "User not found" });

            }
        });
});

module.exports = router;  

谢谢你:-)

【问题讨论】:

  • “另一个问题。”一个个问题/问题,并把你问的问题说清楚。这个问题不清楚,尤其是因为:resolve 与什么有什么关系?

标签: javascript node.js


【解决方案1】:

我不确定您标题的“解决”部分与您的问题有什么关系,但我可以回答您在问题中讨论的其余内容。

我的 app.js 中有一些变量...我想传递它们并 通过 userRoutes.js 文件中的路由方法使它们可用。

与另一个模块共享某些设置的常用方法是在模块构造函数或模块方法中将它们传递给该模块:

var userRoutes = require('./serverRoutes/userRoutes')({
    tokens: tokens, 
    jwtSecretKey: jwtSecretKey, 
    jwt: jwt, 
    User: User
});

然后,在该 userRoutes 模块中:

var express = require('express');
var router = express.Router();
var jwtSecretKey, jwt, User, tokens;

router.post('/user/login', function (request, response) {
    var email = request.body.email;
    var password = request.body.password;

    User.findOne({ email: email, password: password },
        function (err, user) {
            if (err)
                response.send(err);

            if (user) {
                var expires = new Date();

                expires.setDate((new Date()).getDate() + 5);

                var token = jwt.encode({
                    email: email,
                    expires: expires
                }, jwtSecretKey);

                tokens.push(token);
                response.send(200, { access_token: token });
            } else {
                response.send(401, { message: "User not found" });

            }
        });
});

// define module constructor
module.exports = function(options) {
    // save data shared from parent module
    jwtSecretKey = options.jwtSecretKey;
    jwt = options.jwt;
    User = options.User;
    tokens = options.tokens;
    return router;
};  

我还有一些我想使用的“帮助”类型的方法 不同的“路由”文件。我也不知道怎么通过。

共享一些常用帮助功能的常用方法是将它们放在自己的模块中,然后您只需在该模块中require() 在您需要使用它们的任何其他模块中。

【讨论】:

    猜你喜欢
    • 2012-02-27
    • 2016-03-14
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2020-12-02
    • 2019-03-17
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多