客户端和服务器端都具有更新的数据,但渲染不显示更新的数据

时间:2018-04-16 13:09:39

标签: javascript node.js express fetch

我使用的技术有: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(服务器/客户端)看到新帖但是它没有呈现

1 个答案:

答案 0 :(得分:0)

启动脚本时,启动服务器appexpress及其所有中间件。

除非重启服务器,否则您的更改无法正常工作,重置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()