簡體   English   中英

Express.js - 如何修改路由中的app.locals變量

[英]Express.js - How to Modify app.locals variables in routes

我有一個node.js項目。 以下代碼是我的app.js文件的一部分。 我正在從數據庫中進行查詢並將結果存儲在名為“Cats”的全局變量中。 我正在使用此變量在網站的側邊欄上顯示類別。 我認為它不相關,但我使用Jade作為模板引擎。

var app = express()

var query = "SELECT * FROM findadoc.categories";
client.execute(query, [], function(err, results) {
  if(err) {
    res.status(404).send({meg: err});
  }
  else {
    app.locals.cats = results.rows;
  }
});

在其中一個路由中,我允許用戶向數據庫添加其他類別。 我需要的是'apps.locals.cats'變量來更新新的類別集。 無論如何我在路線上修改了這個嗎? 我試過以下但是沒有用。

router.post('/add', function(req, res, next) {
    var cat_id = cassandra.types.uuid();
    var query = "INSERT INTO findadoc.categories(cat_id, name) VALUES (?,?)";
    client.execute(query, [cat_id, req.body.name], {prepare: true},   function(err, results) {
        if(err) {
            res.status(404).send({msg: err});
        } 
        else {
            cats = results.rows;
            req.flash('success', "Category Added");
            res.location('/doctors');
            res.redirect('/doctors');
        }
    });
});

在Express 4中您可以使用req.appreq訪問app 請參閱請求對象 API文檔。

通過req.app.locals在中間件中提供本地人(請參閱req.app)

在您的中間件中,您可以這樣做:

router.post('/add', function(req, res, next) {
    // do some cool stuff
    req.app.locals.cats = something;
    // more cool stuff
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM