我使用的技术有:Nodejs,Express,MySQL,EJS。
我在做什么:
有一个app.get从MySQL获取所需数据(帖子),然后使用该数据呈现文件
app.get("/" + element.name, function(req, res){
connection.query(`SELECT * FROM sub ${element.name} posts`, function(error, result) {
if(error) {
console.log(`Nick error`)
} else {
console.log(`Works get !`)
posts = result;
}
});
res.render("sub" + element.name, {posts:posts}), console.log(posts + " Here")
当有人访问该网址时,会呈现该数据(帖子)并使用该数据发出FETCH POST请求(我正在使用它的长度),
// Before this, the data gets mapped into the variable called "final"
console.log("!!!###")
console.log(`Above the FETCH`)
console.log(`yes in normal position 1 `)
console.log(` BTW ${JSON.stringify(final)}`) // I CAN SEE THE NEW POST HERE #########################
fetch(`/ookook`, { method: 'POST', body: JSON.stringify(final), headers: new Headers({ "Content-Type": "application/json" }) })
.then(res => res.json())
.then(jsonRes => {
console.log(`yes in normal position 2 `)
console.log(`DRAGON BTW ${JSON.stringify(final)}`) // I CAN SEE THE NEW POST HERE ###############################
})
POST请求然后看到数据的长度(帖子)和每个数据(它是一个对象数组的数组,因此它为每个数组数组执行此操作)创建一个app.get路由,url是“ / pagename / 2“(数字增加)
app.post("/" + element.name, function(req, res) {
for(let i = 0; i < req.body.length; i++) {
for(let b = 0; b < req.body[i].length; b++) {
console.log(req.body[i][b].id)
let posts = req.body[i];
console.log(posts) // I CAN SEE THE NEW POST HERE ###########################
console.log("in app.post friendo")
app.get(`/${element.name}/${i + 2}`, function(req, res) {
res.render("sub"+ element.name, { posts:posts})
})
}
}
res.status(200).json({voteNum: 5}) // Ignore the voteNum
});
问题:当我创建一个新帖子时,它将它提供给我的数据库,我可以使用console.log在我的客户端和服务器端看到它但是它不会呈现它。我要看帖子,我必须重新启动服务器。
我在代码中写了“// I CAN SEE THE POST HERE #############
”,我可以在console.log(服务器/客户端)看到新帖但是它没有呈现
答案 0 :(得分:0)
启动脚本时,启动服务器app
即express
及其所有中间件。
除非重启服务器,否则您的更改无法正常工作,重置app
。
我认为你的概念不正确
<强>第一强>
也许尝试这样的事情
let list = [];
//list is the data in posts, you can init it by query the DB.
app.get('/:elementname' ,()=>{
//check whether req.params.elementname match list
//if match, it is a validate url, or else 404 NOT FOUND=>call next()
})
app.post('/newPostName', ()=>{
//add new post to DB and update list.
})
<强>第二强>
顺便说一下,
您最好检查connection.query
是否是异步功能。
如果是,则代码应为
connection.query('query...' ,()=>{
//...
res.render()
})
不
connection.query('query...' ,()=>{
//...
})
res.render()