gpt4 book ai didi

Node.js 代码提示

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

你好,我想知道我对这种代码是否正确,是否有更好的方法。

有一个获取主页的模块。

应用程序.js:

[...]
// Get homepage
app.get('/', frontend.index);
[...]

frontend.index 函数必须从 redis 获取几个数据对象(util.getRemoteConfig 和 util.getGlobalStats)并使用它们来呈现 Jade 模板,所以我这样做了。

前端.js:

[...]
// [GET] Homepage
exports.index = function(req, res){
var remoteConfig = {};
var globalStats = {};

util.getRemoteConfig(function(remoteConfig) {

var version = 'n.a.';
if (remoteConfig.version)
version = remoteConfig.version;

util.getGlobalStats(function(globalStats) {

res.render('index.jade',
{ title: config.items.default_title, version: version, global_stats: JSON.stringify(globalStats) }
);
});
});
};
[...]

util模块从redis中获取数据并通过回调传递。

util.js:

[...]
exports.getRemoteConfig = function(cb) {
client.hget('remote_config', function(err, obj) {
if (err) return cb(err);
// do something with obj and return it
cb(obj);
});
};

exports.getGlobalStats = function(cb) {
client.hgetall("global_stats", function (err, obj) {
if (err) return cb(err);
// do something with obj and return it
cb(obj);
});
};
[...]

这工作正常,但它真的正确吗?我可以做比这更好的事情吗?

谢谢,任何提示都会有用。

最佳答案

如果远程配置和全局统计信息是独立于路由的,您应该将它们放入中间件而不是 Controller :

中间件.js:

exports.remoteConfig = function(req,res,next){
util.getRemoteConfig(function(err,config){
if(err){
return next(err);
}
req._remote_config = config;
return next(null);
});
}

controllers.js:

exports.index = function(req, res){   
var remoteConfig = req._remote_config;
var globalStats = req._global_stats;

res.render('index.jade', {
title: config.items.default_title,
version: version,
global_stats: JSON.stringify(globalStats)
};
};

应用程序.js:

app.get('/', middleware.remoteConfig, middleware.globalStats,controllers.index);

app.use(middleware.remoteConfig);
app.use(middleware.globalStats);

如果中间件应该用于所有路由。

注意:代码未经测试。

关于Node.js 代码提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25118745/

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