[英]Passing objects and variables using `require` in `Node.js`
我正在將路由方法從app.js
移動到單獨的文件。
我設法使用(在app.js
)做到了:
var userRoutes = require('./serverRoutes/userRoutes');
app.use('/userRoutes', userRoutes);
app.post('/user/login', userRoutes);
我可以看到路由正在完成。
我的app.js
有一些變量,例如:
- tokens
數組
- jwtSecretKey
字符串
- 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;
謝謝 :-)
我不確定您標題中的“解決”部分與您的問題有什么關系,但我可以回答您在問題中討論的其余部分。
我的 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()
來使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.