首页 > 解决方案 > nodejs在两个不同的中间件中传递相同的变量

问题描述

在我的应用程序文件中,我有两个 post middlwares

app.post('/check',urlencodedParser,function (req, res) {
 
  var date_entre_user=req.body.dateentry;
  var date_sortie_user=req.body.datesortie;
  var idroom=req.body.room;
  let sql=`SELECT *  FROM reservation WHERE idchambre = ${req.body.room}`;
  let query=db.query(sql,(err,result)=>{

     datesortieuser=dateFormat(date_sortie_user,"isoDaTteTime");
     dateentreuser= dateFormat(date_entre_user,"isoDateime");



app.post('/submit',urlencodedParser,function (req, res) {
.numtele,
    email: req.body.email
}

 /* let clt = {
    nom: req.body.nom,
    prenom : req.body.prenom,
    cin: req.body.cin,
    ville: req.body.ville,
    pays: req.body.pays,
    tele: req.body
let sql2 = 'INSERT INTO client SET ?'
  db.query(sql2, clt,function (err, result) {
    if (err) throw err;
    console.log("1 client inserted");
  });

  let sql3 =`SELECT idclient FROM client WHERE nom = ${req.body.nom}`;
  db.query(sql3,function (err, result) {
    if (err) throw err;
    console.log(result);
  });

但是当我在第二个中间件帖子中使用变量 date_entre_user 时,我得到变量 undefined 我该怎么做?

标签: node.js

解决方案


您提到的变量仅在您的第一个.post()方法中定义,因此它不在第二个方法的范围内。

如果你想将数据从一个中间件函数传递到另一个,一个好方法是使用req.locals,用你传递的数据装饰 req 对象。像这样的东西。

/* in one function */
if (!req.locals) req.locals = {}
req.locals.date_entre_user = quelqueChose

然后在下一个函数中,您可以引用同一项目。


推荐阅读