Javascript 我希望能够得到产品的类别,类别和型号或只是得到所有的产品。目前正在为此使用3个不同的端点
我的后端有3个端点,它们根据一些标准返回产品。我想知道是否应该重写逻辑并将其合并到单个端点/函数中。目前我的路线如下所示:Javascript 我希望能够得到产品的类别,类别和型号或只是得到所有的产品。目前正在为此使用3个不同的端点,javascript,node.js,express,Javascript,Node.js,Express,我的后端有3个端点,它们根据一些标准返回产品。我想知道是否应该重写逻辑并将其合并到单个端点/函数中。目前我的路线如下所示: router.get('/products', productController.getProducts); router.get('/products/:categoryId', productController.getProductsByCategory); router.get('/products/:model/:categoryId', productCont
router.get('/products', productController.getProducts);
router.get('/products/:categoryId', productController.getProductsByCategory);
router.get('/products/:model/:categoryId', productController.getProductsByModelCategory);
我有3个功能非常相似,但也略有不同。我想知道我是否应该通过重写其中一个函数并完全删除另外两个函数来干燥代码。这将使函数在使用一些条件语句时更加复杂,但我将删除大量重复代码。另一方面,对于3个端点,很清楚每个端点都做了什么
module.exports.getProducts = async (req, res, next) => {
let page = parseInt(req.query.page, 10)
let limit = 10
let offset = ( page - 1 ) * limit
try {
let products = await Product.findAndCountAll({
limit: limit,
offset: offset,
order: [
['createdAt', 'DESC']
],
include: [
{
model: Model
},
{
model: Brand
}
]
})
let pages = Math.ceil( products.count / limit )
res.status(200).json({
totalItems: products.count,
totalPages: pages,
products: products.rows
})
} catch (e) {
console.log(e)
res.status(500)
}
}
module.exports.getProductsByCategory = async (req, res, next) => {
let categoryId = req.params.categoryId
let page = parseInt(req.query.page, 10)
let limit = 10
let offset = ( page - 1 ) * limit
try {
let products = await Product.findAndCountAll({
limit: limit,
offset: offset,
where: {
categoryId: categoryId
}
})
let pages = Math.ceil( products.count / limit )
res.status(200).json({
totalItems: products.count,
totalPages: pages,
products: products.rows
})
} catch (e) {
console.log(e)
res.status(500)
}
}
module.exports.getProductsByModelCategory = async (req, res, next) => {
let model = req.params.model
let categoryId = req.params.categoryId
let page = parseInt(req.query.page, 10)
let limit = 10
let offset = ( page - 1 ) * limit
try {
let products = await Product.findAndCountAll({
limit: limit,
offset: offset,
where: {
categoryId: categoryId
},
include: {
model: Model,
where: {
name: model
}
}
})
let pages = Math.ceil( products.count / limit )
res.status(200).json({
totalItems: products.count,
totalPages: pages,
products: products.rows
})
} catch (e) {
console.log(e)
res.status(500)
}
}
如果我在你的位置上,我有3个选择:
?
。
您可以访问控制器中的参数,并使用开关
大小写或任何类似的选项来根据参数显示结果。因此,只有一条路线
既然你没有实际的问题,你最好把你的问题发到网上。这是一个很好的社区,人们愿意对你的代码给出反馈。