为了账号安全,请及时绑定邮箱和手机立即绑定

有条件地将 EJS 模板视图渲染到相同的路径

有条件地将 EJS 模板视图渲染到相同的路径

繁花不似锦 2021-06-01 17:24:10
所以,非常新手的问题,但我搜索了几个小时并找不到这个特定的问题(我知道我在做一些愚蠢的事情)。我正在从一个简单的 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”,但是一旦总体函数运行一次,渲染就不会更改。对不起,如果它很难阅读,但它让我一整天都发疯了。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信