Как вызвать разные функции контроллера для одного и того же маршрута? - PullRequest
0 голосов
/ 11 января 2019

У меня определен маршрут для подачи заявки на кредит, я хочу вызвать другую функцию контроллера в зависимости от суммы кредита, на который претендует пользователь.

app.use('/submitLoanRequest50kMore', mw1, mw2, mw3, loan50kLess)

app.use('/submitLoanRequest50kMore', mw1, mw2, mw3, loan50kMore)

Я хочу, чтобы конечная точка была одинаковой, и я вызываю функцию контроллера (loan50kLess или loan50kMore), основываясь на одном из промежуточных программ, скажем, mw4

app.use('/submitLoanRequest', mw1, mw2, mw3, mw4, .....) // could be loan50kLess() or loan50kMore()

Я знаю, что это можно сделать, написав логику в последней функции или переадресации маршрута, но эта вещь также может быть вложена в несколько уровней, например, я могу добавить другое промежуточное программное обеспечение, если сумма кредита превышает 50k.

Пожалуйста, дайте мне знать, если есть способ сделать это в узле, экспресс не требуется.

Также дайте мне знать, если вам нужны разъяснения. It's called a rule engine or workflow engine in java

1 Ответ

0 голосов
/ 11 января 2019

Вы можете реализовать такое поведение с помощью middleware . ( также )
Как я вижу, вы уже используете промежуточное программное обеспечение, поэтому для добавления нового вам необходимо создать такую ​​функцию:

// function accepts three params. request, response and next. 
const loan50kLess = (req, res, next) => {
  //assume you have load parameter somewhere in request param.
  // example logic would be this

  if(req.params.loan > 50000) { 
    return res.status(200).json({message: 'Load is more then 50k'}) 
 }
 // If load is less then 50k, or any other middleware param, you have just call next() to pass execution to the next stage.
 next()
}

И тогда в вашем маршруте вы можете использовать его как другое промежуточное ПО:

app.use('/submitLoanRequest50kMore', mw1, mw2, mw3, loan50kMore);

Но учтите, что если в этом случае кредит меньше 50 000, вам нужно добавить логику в промежуточное ПО или добавить следующую функцию в вызове для обработки этого случая.
Как это:

app.use('/submitLoanRequest50kMore', mw1, mw2, mw3, loan50kMore, (req, res) => {
  ...some logic if loan is less then 50k
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...