前端fetch POST DOM数据后,如何在Node.js中触发res.render渲染URL?
问题:POST更新数据库后确保下一次GET请求渲染最新数据的实现方案
尽管查阅了诸多相关问题,我仍不确定在前端JS收集DOM数据并通过fetch POST至Express服务器的POST接口后,渲染对应URL的最佳方案是什么。
我的前提说明:
- 我知晓fetch POST本身不会触发渲染
- 目前我不寻求替代POST方法(如XML/FORM等),若当前方案不可行我会另行提问
- 感谢关于即时刷新URL的回复,但我的核心需求是让对应URL能在浏览器下一次GET请求时完成渲染
- 我推测当前问题在于应用仅在服务器启动时渲染一次该URL
请问在fetch POST请求及MySQL的ttupdate查询完成后,如何调用render函数?
附渲染代码片段
// snippet render code //////////////////////////////////////////////// function render(file, url, contentdata) { app.get(url, async(_req, res, next) => { try { res.render(file, { data: await contentdata }); } catch (err) { next(err); } }); } render('time-picker', '/time-picker', timetablesthree)
应在以下POST接口代码片段中的何处及如何实现该逻辑?
// snippet new TIME-PICKER table to DB app.post("/time-picker-input", async(req, res) => { for(i=0; i<=167; i++) { let inputFieldId = req.body[i].fieldid; let inputFieldValue = req.body[i].fieldvalue; // console.log(inputFieldId); await ttupdate(inputFieldValue, inputFieldId, 'timetablesthree'); }; res.json({ message: 'Success' }); });
环境配置信息
let express = require('express') let bodyParser = require('body-parser') let app = express() app.set('view engine', 'ejs') let path = require('path') app.set('views', path.join(__dirname, 'views')) app.use(express.static(path.join(__dirname, 'public'))); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })) app.use((err, req, res, next) => { console.error(err.stack) res.status(500).send('Sorry - something broke...') }) app.listen(3000, (req, res) => { console.log("App is running on port 3000") }) let { singledbentry, refresh, refreshTwo, ttupdate } = require("./database.js") let activetime = require('./activetime.js'); let mysql = require('mysql2')
内容的提问来源于stack exchange,提问作者IoT-Practitioner
相关产品推荐
相关产品推荐

