【问题标题】:How to execute NodeJS function on page refresh如何在页面刷新时执行 NodeJS 功能
【发布时间】:2017-05-09 13:58:39
【问题描述】:

我从一个示例编写了一个小型 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 文档中完全迷失了。

【问题讨论】:

    标签: node.js express


    【解决方案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);
    

    或者:

    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(),所以我猜您想要将设置变量和使用变量的行为分开。

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      相关资源
      最近更新 更多