gpt4 book ai didi

javascript - Node : Code optimization and variable scoping

转载 作者:行者123 更新时间:2023-11-30 12:08:38 25 4
gpt4 key购买 nike

纯 Javascript 编程的新手,我只是想知道如何优化下面的冗余代码:

module.exports = function(app, express) {
var router = express.Router();

router.get('/', function (req, res, next) {
var db = req.db;
var collection = db.get('projects');
var projects = collection.find({}, {}, function(e, docs){
res.json({
success: true,
message : 'ok',
projects: docs
});
});
});

router.get('/:id', function (req, res, next) {
var db = req.db;
var collection = db.get('projects');
var projects = collection.find({_id: req.params.id}, {}, function(e, docs){
res.json({
success: true,
message : 'ok',
project: docs
});
});
});

return router;
};

如您所见,从 var db 开始到 res.json() block 的代码都是可优化的,但我不确定如何继续处理它。有什么想法吗,伙计们?

谢谢!

最佳答案

您可以编写一个函数来将查询结果返回给客户端:

function handleQuery(query, req, res, next) {
var db = req.db;
var collection = db.get('projects');
var projects = collection.find(query, {}, function(e, docs){
res.json({
success: true,
message : 'ok',
project: docs
});
});
}

然后你的路线可以折叠成这些:

router.get('/', function (req, res, next) {
handleQuery({}, req, res, next);
});

router.get('/:id', function (req, res, next) {
handleQuery({_id: req.params.id}, req, res, next);
});

当您这样做时,请意识到您没有正确处理错误。要正确处理错误,您应该检查 e 的值。如果它是真实的,你有一个错误,你需要适本地处理它,例如像这样:

function handleQuery(query, req, res, next) {
var db = req.db;
var collection = db.get('projects');
var projects = collection.find(query, {}, function(e, docs){
if(e) {
return next(e);
}
res.json({
success: true,
message : 'ok',
project: docs
});
});
}

关于javascript - Node : Code optimization and variable scoping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34469056/

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