Javascript 在节点MVC中传递req.params
我试图弄清楚如何在MVC环境下使用Express传递req.params 我知道如何正确地引用req.params,但当我将app.js拆分为模型和控制器时,我完全不知所措 参考代码: routes.jsJavascript 在节点MVC中传递req.params,javascript,node.js,express,model-view-controller,Javascript,Node.js,Express,Model View Controller,我试图弄清楚如何在MVC环境下使用Express传递req.params 我知道如何正确地引用req.params,但当我将app.js拆分为模型和控制器时,我完全不知所措 参考代码: routes.js app.get('/category/:category', descriptor.getSingleCategory) model.js let getSingleCat = (cb) => { let queryString = 'SELECT * FROM categor
app.get('/category/:category', descriptor.getSingleCategory)
model.js
let getSingleCat = (cb) => {
let queryString = 'SELECT * FROM categories WHERE category_id = $1'
let queryValue = [req.params.category]
db.query(queryString, queryValue, cb)
}
let getSingleCat = (params, cb) => {
let queryString = 'SELECT * FROM categories WHERE category_id = $1'
let queryValue = params.category
db.query(queryString, queryValue, cb)
}
controller.js
const getSingleCategory = (req, response) => {
console.log(req.params.category);
db.desc.getSingleCat((err, queryRes) => {
if (err) {
//render something went wrong
response.send('something went wrong')
} else {
response.send(queryRes.rows)
}
})
}
const getSingleCategory = (req, response) => {
console.log(req.params.category);
db.desc.getSingleCat(req.params, (err, queryRes) => {
if (err) {
//render something went wrong
response.send('something went wrong')
} else {
response.send(queryRes.rows)
}
})
}
我已经检查了所有的需求,它们工作正常。是否有一种不使用中间件传递req.params的普通方法?在模型中使用req.params的唯一方法是将其作为参数发送,如下例所示:
model.js
let getSingleCat = (cb) => {
let queryString = 'SELECT * FROM categories WHERE category_id = $1'
let queryValue = [req.params.category]
db.query(queryString, queryValue, cb)
}
let getSingleCat = (params, cb) => {
let queryString = 'SELECT * FROM categories WHERE category_id = $1'
let queryValue = params.category
db.query(queryString, queryValue, cb)
}
controller.js
const getSingleCategory = (req, response) => {
console.log(req.params.category);
db.desc.getSingleCat((err, queryRes) => {
if (err) {
//render something went wrong
response.send('something went wrong')
} else {
response.send(queryRes.rows)
}
})
}
const getSingleCategory = (req, response) => {
console.log(req.params.category);
db.desc.getSingleCat(req.params, (err, queryRes) => {
if (err) {
//render something went wrong
response.send('something went wrong')
} else {
response.send(queryRes.rows)
}
})
}
您不能使用全局变量,因此这是唯一的方法。此外,此变量req只能在绑定到将接收实际请求的端点的函数中访问。此处尝试正确理解流程,对于节点中的MVC来说仍然是新的。my routes.js中的req将首先传递给controller.js,它存储在参数req.params中,然后再传递给model.js params?是的,没错。首先,您的后端将收到一个请求,该请求将被路由绑定。该路由将有一个相关的回调函数,该函数接收两个参数req,res。在该函数中,您将有权访问所有请求参数,在那里您将有逻辑来处理它们。