我从一个例子中写了一个小的NodeJS应用程序。这是我的代码的一部分。
server.js:
var app = express();
var helper = require('./helpers.something.js');
helper.calculate(function(result) {
app.set('something', result);
});
var router = express.Router();
var home = require(./controllers/home.js);
router.get('/', home.index);
home.js
exports.index = (function(req, res) {
res.locals.calculations = req.app.get('something');
res.render('home', {
data: req.app.get('something');
});
};
我现在要解决的问题是,只有在每次刷新页面时启动服务器而不是调用服务器时,才会调用helper.calculate函数。有人建议我如果我想在home.js和server.js文件中使用结果,每次刷新页面时如何调用helper.calculate,因为我在express.js文档中很丢失。
答案 0 :(得分:1)
您可以创建一个中间件,每次访问此路由时都会运行该函数。
你可以改变这个:
helper.calculate(function(result) {
app.set('something', result);
});
var router = express.Router();
var home = require(./controllers/home.js);
router.get('/', home.index);
这样的事情:
var router = express.Router();
var home = require(./controllers/home.js);
const calculate = (req, res, next) => {
helper.calculate(function(result) {
app.set('something', result);
});
next();
};
router.get('/', calculate, home.index);
OR:
var router = express.Router();
var home = require(./controllers/home.js);
const calculate = (req, res, next) => {
helper.calculate(function(result) {
app.set('something', result);
next();
});
};
router.get('/', calculate, home.index);
取决于您是否要等到helper.calculate()
完成后再运行控制器。
另一种选择是将其添加到home.js中的控制器代码中,但我认为您不想这样做,因为您之后会使用app.set()
和app.get()
一个另一个所以我想你想分开设置变量和使用它的行为。