使用Express通过多个API调用的静态变量

时间:2016-04-21 04:19:36

标签: node.js express

我想要一个可以保留上次API调用值的变量。也就是说,每当我调用/api时,它会将变量计数增加1,当我调用/value时,它会显示count的值。因此,如果我拨打/api 3次然后拨打/value,则应打印3。

有可能吗?保持变量的值抛出多个API调用?我试图避免访问文件和数据库,我相信我可以用那些来做。

4 个答案:

答案 0 :(得分:4)

如果在js文件的top-level中创建变量,那么该js文件将是全局变量。此外,如果您的/api/value路由处理程序位于不同的文件中,您可以创建一个global variable,它将在所有其他文件中可见。但是你必须考虑到其他变量不应该与你的全局变量具有相同的名称,因为它将被覆盖。 在这里你有一个很好的相关帖子:How to use global variable in node.js?

var count = 0;

app.get('/api', function(req, res) {
  count += 1;
  res.send();
}

app.get('/value', function(req, res) {
  res.send(count);
}

答案 1 :(得分:3)

您可以在应用的任何部分创建一个可以要求的模块。

例如,您将counter.js中的模块定义为

var counter = function() {
    var count = 0;

    this.addCount = function() {
        count++
    }

    this.getCount = function() {
        return count;
    }
}

counter.instance = null;

counter.getInstance = function() {
    if (this.instance === null) {
        this.instance = new counter();
    }

    return this.instance;
}

module.exports = counter.getInstance();

现在,您可以在server.js这样的

中使用它
var express = require('express');
var app = express();

var bodyParser = require('body-parser');
var morgan = require('morgan');

app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

var counter = require('./counter.js');
app.get('/value', function(req, res, next) {
    res.send('Count = ' + counter.getCount());
});

app.use('/api', require('./api.js'));

var server = app.listen(3000, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log("Server listening at http://%s:%s", host, port);
});

api.js这样的

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

var counter = require('./counter.js');

router.get('/', function(req, res, next) {
    counter.addCount();
    res.send('API Called');
});

module.exports = router;

答案 2 :(得分:0)

是,Use可以使用快速会话或任何其他会话来获取相同或全局变量

答案 3 :(得分:0)

您可以在api ...

之外设置这样的全局变量
var count = 0;

然后像这样做一个api ......

app.get('/value', function(req, res) {
  res.send(count);
})
app.get('/api', function(req, res) {
  count = count + 1;
  res.send();
})

上面的例子是使用express框架。如果你没有使用它,你应该习惯它。这是一个很棒的框架!