javascript - Express:router.post 和 router.get 之间共享逻辑

标签 javascript ajax node.js express

我的客户端有一个表单,它在我的 Express 应用程序中通过 AJAX 向服务器发送数据。我想在出现错误或消息发送成功时向用户显示一些响应。

此代码代表消息无法发送时的错误消息。我的 Handlebars 模板中的特定 div 如下所示:

<div class="form-validation-error" style="{{formValidationError}}">ERROR: Message cannot be sent!</div>

CSS 默认关闭:

.form-validation-error {
  display: none;
}

在我的routes/contact.js中,我有一个router.post block ,它正在处理消息发送:

router.post('/', (req, res, next) => {
  if(req.body.firstname.length === 0 || !req.body.firstname.match(/\D+/igm)) {
    var validateFirstname = false;
  } else {
    var validateFirstname = true;
  };

  if(req.body.captcha.length === 0 || !req.body.captcha.match(/^kettő|ketto|two$/igm)) {
    var validateCaptcha = false;
  } else {
    var validateCaptcha = true;
  };

  if(validateFirstname === true && validateCaptcha === true) {
    console.log('SUCCESS: Form validated! The Nodemailer script will be here!');
  } else {
    console.log('ERROR: Form not validated!');
    const formValidationErrorTrue = 'display: block;'; // -> How can I achieve this!??
    res.send({formValidationError: 'display: block;'}); // -> Or this!??
  };
});

在这个 block 之后,我有一个 router.get 模板渲染部分:

router.get('/', (req, res, next) => {
  fsAsync((err, data) => {
    if(err) {
      res.render('404', {
        title: 'Error 404'
      });
    }

    const contact = data[2].contact;

    res.render('contact', {
      title: 'Contact',
      data: contact,
      formValidationError: formValidationErrorTrue // -> How can I achieve this!??
    });
  });
});

我的问题是,如何在 router.postrouter.get 之间共享变量?

最佳答案

您可以创建一个方法并在 get 和 post 路由中调用该方法。我会将所有逻辑封装在 Controller 中,而不是直接封装在您的 route 。也许您也可以使用中间件(google express 中间件)来解决这个问题,但我通常看到它被用于身份验证或错误日志记录。

(很抱歉回答简短。我正在手机上打字)

关于javascript - Express:router.post 和 router.get 之间共享逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366513/

相关文章:

javascript - 如何在 javascript 中迭代 xml 元素的直接子元素,保存特定属性的值?

javascript - 使用 Node.js 子进程时没有回车?

javascript - Socket.io Emit 不起作用

javascript - 如何从包含数据库查询的 Node.js 函数返回值

javascript - 开 Jest - expect(...).toContainEqual 不是一个函数

java - JavaScript eval 函数的强大功能

ajax - CodeIgniter - jQuery,JSON,简单的例子不起作用

javascript - JQuery/AJAX : How to pass variables to some JS-API?

javascript - 模态表单让我的屏幕被挡住

javascript - AngularJS - 当它的键在另一个范围内为真时更改范围值