gpt4 book ai didi

node.js - 在 Node.js/Express 中的路由中传递 Redis 键值对

转载 作者:可可西里 更新时间:2023-11-01 11:21:27 24 4
gpt4 key购买 nike

这类似于question ,但我的代码有多个路由。

下面的代码适用于我想做的事情,但我想知道是否有更简洁的方法来编写它,因为我是 Node/Express/Redis 的新手。

var express = require('express');
var router = express.Router();
var io = require('socket.io');
var redis = require('./../lib/redis');

redis.get('count', function(err, value) {
if(err) throw err;

/* GET Dashboard */
router.get('/', function(req, res) {
res.render('dashboard', {title: 'Data Dashboard', count: value });
});

/* GET Backend */
router.get('/backend', function(req, res) {
res.render('backend', {title: 'Backend', count: value });
});
});

module.exports = router;

基本上,我只是将一个 Redis 键值传递给我的两个路由。任何清理它的建议都将受到赞赏。

最佳答案

按照您编写代码的方式,您将在整个应用程序生命周期中传递相同的 count 键值。从 cleaning 的角度来看,代码没有任何问题,但从服务的角度来看,路由不应该在 REDIS GET 回调中。

获取路由内的值

// Use everytime you need to count the key
function redisCount = function(callback) {
redis.get('count', function(err, value) {
if(err) callback(err)
callback(null, value)
}
}

/* GET Dashboard */
router.get('/', function(req, res) {
redisCount(function(err,value) {
if(err) throw err;
res.render('dashboard', {title: 'Data Dashboard', count: value });
})
});

/* GET Backend */
router.get('/backend', function(req, res) {
redisCount(function(err,value) {
if(err) throw err;
res.render('backend', {title: 'Backend', count: value });
})
});

但是,如果您对绝对每条路由执行此计数调用,我建议使用一个中间件,它只为每次调用将值设置到上下文中:

在单独的中间件中获取值

app.use(function (req, res, next) {
// using the same function for the redis count
redisCount(function(err, value) {

// respond with error
if (err) res.status("Could not connect to Redis")

// otherwise set the value in the session
req.session.value = value

// and move on to the next middleware
next()

});
});

// now simply declare your routes

/* GET Dashboard */
router.get('/', function(req, res) {
res.render('dashboard', {title: 'Data Dashboard', count: req.session.value });
});

/* GET Backend */
router.get('/backend', function(req, res) {
res.render('backend', {title: 'Backend', count: req.session.value });
});

关于node.js - 在 Node.js/Express 中的路由中传递 Redis 键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29210691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com