我正在尝试在我的应用程序中发布一些GET路由,它将使用request.query在我的应用程序中处理简单的“GET ALL”查询和过滤数据查询。然后有更正确的方法:
a = b = c
?因为这种方式看起来很糟糕:| 正如你所看到的 - 我正在使用NodeJS和mongoose。 日Thnx!
答案 0 :(得分:0)
因为这种方式看起来很糟糕:|如你所见
您可以对您的代码进行以下修改。因此它将更加清晰和高效。
var album = require('album');
router.get('/', function(req, res, next) {
if (!req.query) {
// Find all
album.getAll(req, res, next);
}
else if (req.query.albumNumber) {
// Find query for albumNumber
album.getAllNumbers(req, res, next);
}
else if (req.query.albumNumber && req.query.artistNumber) {
// Find query for albumNumber and artistNumber
album.getAlbumNumberAndArtists(req, res, next);
}
});
你可以拆分逻辑。你可以创建一个名为controllers的文件夹,它与数据库通信并创建一个处理数据并发送相应响应的album.js文件。这使您的代码可以重复使用并防止干燥(不要自己重复)。现在您有一个更干净的API。使用
res.json({
albums:albums
});
res.json最终调用res.send
//inside album.js
//include mongoose
//include models
module.exports = {
getAll : function(req, res, next){
albumsHandler.album.find({}, function (err, albums) {
if (!albums) return res.sendStatus(400);
res.send(albums);
if (mongoose.connection.readyState != CONSTS.MONGO_DISSCONECT_STATUS) {
mongoose.connection.close();
}
});
},
getAllNumbers : function(req, res, next){
albumsHandler.album.find({ albumNumber: req.query.albumNumber }, function (err, albums) {
if (!albums) return res.sendStatus(400);
res.send(albums);
if (mongoose.connection.readyState != CONSTS.MONGO_DISSCONECT_STATUS) {
mongoose.connection.close();
}
});
},
getAlbumNumberAndArtists : function(req, res, next){
albumsHandler.album.find({ albumNumber: req.query.albumNumber, artistNum: req.query.artistNumber }, function (err, albums) {
if (!albums) return res.sendStatus(400);
res.send(albums);
if (mongoose.connection.readyState != CONSTS.MONGO_DISSCONECT_STATUS) {
mongoose.connection.close();
}
});
}
};