【问题标题】:Passing req.params around in Node MVC在 Node MVC 中传递 req.params
【发布时间】:2018-12-12 19:02:07
【问题描述】:

我试图弄清楚如何在 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 categories WHERE category_id = $1'
    let queryValue = [req.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)
        }
    })
}

我已经检查了所有要求并且它们工作正常。有没有一种不使用中间件就可以传递 req.params 的普通方法?

【问题讨论】:

    标签: javascript node.js express model-view-controller


    【解决方案1】:

    在模型中使用req.params 的唯一方法是将其作为参数发送,如下例所示:

    model.js

    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(req.params, (err, queryRes) => {
            if (err) {
                //render something went wrong
                response.send('something went wrong')
            } else {
                response.send(queryRes.rows)
            }
        })
    }
    

    您不能使用全局变量,所以这是唯一的方法。此外,此变量 (req) 只能在绑定到将接收实际请求的端点的函数中访问。

    【讨论】:

    • 试图正确理解这里的流程,对于节点中的 MVC 来说仍然是新手。我的 routes.js 中的 req 将首先传递给 controller.js,它存储在参数 req.params 中,然后传递给 model.js 参数?
    • 是的,没错。首先,您的后端将收到一个请求,该请求将被路由绑定。该路由将具有关联的回调函数,该函数接收两个参数(req,res)。在此函数中,您将可以访问所有请求参数,并且在那里您将拥有处理它们的逻辑。
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多