我想要一个可以保留上次API调用值的变量。也就是说,每当我调用/api
时,它会将变量计数增加1,当我调用/value
时,它会显示count的值。因此,如果我拨打/api
3次然后拨打/value
,则应打印3。
有可能吗?保持变量的值抛出多个API调用?我试图避免访问文件和数据库,我相信我可以用那些来做。
答案 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框架。如果你没有使用它,你应该习惯它。这是一个很棒的框架!