Node-Webkit mysql 数据到新闻提要

Node-Webkit mysql data to news feed

我正在开发一个新闻提要工具,我们可以将远程新闻消息发送到屏幕上。现在我已经完成了系统的后端工作,现在正在 frontend/client.

上工作

我将使用node-web kit 在屏幕上显示新闻。我已经与数据库建立了连接,并且它还在控制台日志中显示了消息。但我不明白在新闻提要页面上显示它。

我试着让它看起来像 CNN 新闻提要横幅: CNN feed banner

样式不是问题,但我没有从 json(mysql 输出)到屏幕上获取日期。

我在控制台中从 mysql 获得的输出如下所示:

[{"id":1,"message":"Test message #1"},{"id":2,"message":"Test message #2"},{"id":3,"message":"Test message #3"}] 

来自客户端的代码如下所示:

<html>
  <head>
    <title>NewsFeed</title>

  <script>

  var mysql      = require('mysql');
  var connection = mysql.createConnection({
    host     : 'XXXXX',
    user     : 'XXXXX',
    password : '',
    database : 'XXXXX'
  });

  connection.connect(function(err) {
    if (err) {
      console.error('error connecting: ' + err.stack);
      return;
    }

    connection.query('SELECT * FROM message', function (error, results, fields) {
      if (error) throw error;
      json = JSON.stringify(results);
      console.log(json);
    });
  });

  </script>
  </head>
  <body>
  </body>
</html>

有人知道如何从控制台读取 Json 信息到 HTML 视图吗?

还有没有办法在数据库中添加新消息时让新闻提要自动更新?

更新:我认为自动刷新不是最好的方法。所以我在考虑远程刷新。这个想法是;

后端系统上的用户登录添加一条消息,然后按按钮重新加载页面。

喜欢这张图片:Idea reload remote

试试这个。

首先,在你DOM中添加一个节点元素,它将包含所有消息。

<body>
    <h1>Messages</h1>
    <div id="message-container"></div>
</body>

然后让你函数写在DOM:

connection.connect(function(err) {
    if (err) {
      console.error('error connecting: ' + err.stack);
      return;
    }

    connection.query('SELECT * FROM message', function (error, results, fields) {
      if (error) throw error;
      json = JSON.stringify(results);
      console.log(json);

      var container = document.getElementById("message-container")

      // Use this in case you can't perform a more precise query
      container.innerHTML = "";

      results.forEach(function(item){
          var node = document.createElement("p");
          var textnode = document.createTextNode(item.message); 

          node.appendChild(textnode);
          container.appendChild(node); 
      })
    });
});

为了让您的数据保持最新,您可以进行一些好的民意测验:

function startTimer() {
    setTimeout(query, 10000)
}

function query() {
  connection.query('SELECT * FROM message', function (error, results, fields) {
      if (error) throw error;
      json = JSON.stringify(results);
      console.log(json);

      var container = document.getElementById("message-container")

      // Use this in case you can't perform a more precise query
      container.innerHTML = "";

      results.forEach(function(item){
          var node = document.createElement("p");
          var textnode = document.createTextNode(item.message); 

          node.appendChild(textnode);
          container.appendChild(node); 
          startTimer()
      })
    });
}

connection.connect(function(err) {
    if (err) {
      console.error('error connecting: ' + err.stack);
      return;
    }
    query()
})

这样你就有了第一个请求。完成后,应用程序将等待 10 秒并提示第二个请求。完成后,等待 10 秒,依此类推...