所以,非常新手的問題,但我搜索了幾個小時并找不到這個特定的問題(我知道我在做一些愚蠢的事情)。我正在從一個簡單的 sqlite 數據庫表中獲取數據,處理某些行是否是特定值,將它們推送到一個表中(我用它來推送到一個 EJS 頁面),然后想要根據是否存在來呈現一個頁面表中是否有任何數據。我想以一定的時間間隔(使用 setInterval)讀取表格,然后如果發生更改,請更新“視圖”。除了 EJS 頁面實際上必須從一個頁面切換到另一個頁面時,所有這些都進展順利。我什至不確定是否可以在渲染后執行此操作。但是,我更愿意在瀏覽器刷新時更改的同一路徑('/')上呈現不同的頁面。初始條件語句呈現正確的 EJS 頁面,但正如我所說,一旦需要切換,頁面將保持在瀏覽器刷新狀態。我試過在多個位置(在“get”內部、外部等)移動條件的位置。還嘗試在單個 EJS 頁面內執行“if”語句,但是一旦呈現初始頁面,然后使用 setInterval 再次調用該函數,它就不會刷新。var sqlite3 = require('sqlite3').verbose();var express = require('express');var app = express();fs = require('fs')app.set('view engine', 'ejs');function query(){ var db = new sqlite3.Database('./my_database.sqlite', sqlite3.OPEN_READWRITE, (err) => { if (err) { console.error(err.message); } console.log('Connected to the chinook database.'); }); var sql = `SELECT column1 column1 FROM myTable WHERE column1 = ?`; var mkts = [] db.each(sql, ['a'], (err, row) => { if (err) { throw err; } mkts.push(row.column1); console.log(mkts); }); db.close((err) => { if (err) { return console.error(err.message); } console.log('Close the database connection.'); console.log(mkts.length); if(mkts.length>0){ console.log(true); app.get('/', function(req, res){ res.render('alert', {mkts:mkts}); }); }else{ console.log(false); app.get('/', function(req, res){ res.render('index', {mkts:mkts}); }); } });};query();setInterval(() => query(), 10000);app.listen(3000);所以基本上在打開然后查詢我想要的數據之后,我在 db.close 上運行 get 和 render。在這段代碼中,我可以在 DB 更改時適當地記錄“true”和“false”,但是一旦總體函數運行一次,渲染就不會更改。對不起,如果它很難閱讀,但它讓我一整天都發瘋了。
有條件地將 EJS 模板視圖渲染到相同的路徑
繁花不似錦
2021-06-01 17:24:10