#node.js
#node.js
Вопрос:
Вопрос новичка здесь, пожалуйста. я пытаюсь проверить значение MAXDEPTH ниже. если оно больше x или меньше y, выполните функцию updateMaxdepth() . В противном случае выводится ошибка, указывающая, что входное значение выходит за пределы. У меня установлен экспресс-валидатор. Просто не могу понять, как реализовать в приведенном ниже коде. Спасибо за вашу помощь!!
============================================================
app.post('/submit', urlencodedParser, function(req, res) {
var QMGR = req.body.qmgr;
var APP_ID = req.body.app_id;
var QUEUE = req.body.queue;
var CURDEPTH = parseInt(req.body.curdepth);
var MAXDEPTH = parseInt(req.body.maxdepth);
var bash = {cmd_1: `su mqm -c dspmq | grep ${QMGR}`,
cmd_2: `su mqm -c 'echo "dis queue(${QUEUE}) CURDEPTH MAXDEPTH" | runmqsc ${QMGR}' | grep MAX |grep -v dis| perl -lanF"[()]" -e 'print $F[1]'`,
cmd_3: `su mqm -c 'echo "dis queue(${QUEUE}) CURDEPTH MAXDEPTH" | runmqsc ${QMGR}' | grep MAX |grep -v dis| perl -lanF"[()]" -e 'print $F[3]'`,
cmd_4: `su mqm -c 'echo "alt ql(${QUEUE}) maxdepth(${MAXDEPTH})" | runmqsc ${QMGR}'`}
let transport = nodemailer.createTransport({host: 'smtp.qcorpaa.aa.com',
port: 25,
//port: 587,
secure: false,
tls: {rejectUnauthorized: false}
//tls: { ciphers:'SSLv3' }});
function updateMaxdepth() {var child = cp.exec(bash.cmd_4, function(err, stdout, stderr) {if (stdout.includes('changed')){var mailOptions = {
from: 'root@esmqst15',
to: 'DL_Enterprise_MQ@aa.com',
subject: 'Maxdepth Updated for queue ' req.body.queue ' on QMGR ' req.body.qmgr,
text: 'Maxdepth Updated for queue ' req.body.queue ' to ' req.body.maxdepth ' on QMGR ' req.body.qmgr ' by App_ID ' req.body.app_id
};
console.log(mailOptions);
transport.sendMail(mailOptions, function(err, info) {
if (err) {
console.log(err)
} else {
console.log(info);
}}}});
Комментарии:
1. Вы можете сделать это в функции с помощью оператора if:
if(req.body.param > x || req.body.param < y) { //do something } else { return reject }
если вам нужен более подробный ответ, дайте мне знать2. Спасибо, Элнатан.. итак, я подумал о том, чтобы вставить условие if..else и, если true, выполнить функцию updateMaxdepth() . Вот где я не уверен, как это сделать .. если вы можете показать мне пример кода.. Спасибо
Ответ №1:
пример кода (должен выглядеть примерно так)
app.post('/submit', urlencodedParser, function(req, res) {
var QMGR = req.body.qmgr;
var APP_ID = req.body.app_id;
var QUEUE = req.body.queue;
var CURDEPTH = parseInt(req.body.curdepth);
var MAXDEPTH = parseInt(req.body.maxdepth);
var bash = {cmd_1: `su mqm -c dspmq | grep ${QMGR}`,
cmd_2: `su mqm -c 'echo "dis queue(${QUEUE}) CURDEPTH MAXDEPTH" | runmqsc ${QMGR}' | grep MAX |grep -v dis| perl -lanF"[()]" -e 'print $F[1]'`,
cmd_3: `su mqm -c 'echo "dis queue(${QUEUE}) CURDEPTH MAXDEPTH" | runmqsc ${QMGR}' | grep MAX |grep -v dis| perl -lanF"[()]" -e 'print $F[3]'`,
cmd_4: `su mqm -c 'echo "alt ql(${QUEUE}) maxdepth(${MAXDEPTH})" | runmqsc ${QMGR}'`}
let transport = nodemailer.createTransport({host: 'smtp.qcorpaa.aa.com',
port: 25,
//port: 587,
secure: false,
tls: {rejectUnauthorized: false}
//tls: { ciphers:'SSLv3' }});
if(req.body.param > x || req.body.param < y) {
updateMaxdepth()
} else {
return res.status(400).json({msg:'not valid'})
}
function updateMaxdepth() {var child = cp.exec(bash.cmd_4, function(err, stdout, stderr) {if (stdout.includes('changed')){var mailOptions = {
from: 'root@esmqst15',
to: 'DL_Enterprise_MQ@aa.com',
subject: 'Maxdepth Updated for queue ' req.body.queue ' on QMGR ' req.body.qmgr,
text: 'Maxdepth Updated for queue ' req.body.queue ' to ' req.body.maxdepth ' on QMGR ' req.body.qmgr ' by App_ID ' req.body.app_id
};
console.log(mailOptions);
transport.sendMail(mailOptions, function(err, info) {
if (err) {
console.log(err)
} else {
console.log(info);
}}}});