Передача req.params в Node MVC - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь выяснить, как передать req.params с помощью Express в контексте MVC.

Я знаю, как правильно ссылаться на 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 без использования промежуточного программного обеспечения?

1 Ответ

0 голосов
/ 04 июля 2018

Единственный способ использовать 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) доступна только в функциях, привязанных к конечной точке, которая получит фактический запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...