所以,非常新手的问题,但我搜索了几个小时并找不到这个特定的问题(我知道我在做一些愚蠢的事情)。我正在从一个简单的 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”,但是一旦总体函数运行一次,渲染就不会更改。对不起,如果它很难阅读,但它让我一整天都发疯了。
添加回答
举报
0/150
提交
取消