javascript - Node.js + Node-MySQL + Express 4 + Mustache

标签 javascript mysql node.js express mustache

我目前正在试验 Node.js,但有点卡住了。我正在尝试将查询传递给 Mustache。

索引.js

//Load Express Framework

var express = require('express');

//Load Mustache Template Engine
var mustachex = require('mustachex');

//Load MySQL
var mysql = require('mysql');
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'nodeuser',
    password : 'testpass',
    database : 'node',
});

connection.connect(function(err) {
});


//Call express
var app = express();

//Set Global App Settings
app.engine('html', mustachex.express);
app.use(express.static(__dirname + '/public'));
app.set('view engine', 'html');
app.set('views', __dirname + '/views');

//Call the layout
app.get('/', function(req, res) {
    var sql    = 'SELECT * FROM menu WHERE id = 1';
    connection.query(sql, function(err, results) {
    });
    for (var i in results){
         var sqlResult = results[i];
         console.log(sqlResult['address'], sqlResult['text']);
    }
    res.render('index');
});

//app.get('/test', function(req, res) {
//  res.render('test');
//});


//Create Server
var port = Number(process.env.PORT || 5000);
app.listen(port, function() {
    console.log("Listening on " + port);
});

Header.html(部分)

在这里,我尝试从 MySQL 加载查询数据。

<div id="menu-container">
    <div id="menu">
        <span class="text"><a href="{{address}}">{{text}}</a></span>
        <span class="text"><a href="/">Home</a></span>
         <span class="text"><a href="/services">Services</a></span>
        <span class="text"><a href="/contact">Contact</a></span>
    </div>
</div>

我两天前才开始学习 Node.js。我能够弄清楚如何使用 Mustache 的部分,但我无法弄清楚 MySQL。我已经在 Node 数据库中创建了必要的表。

MySQL

 menu
 -> ID (INT) -> 1
 -> Address (Text) -> www.example.com
 -> Text (Text) -> Test

我该如何解决这个问题?

很难找到好的 Node.js 手册。

最佳答案

query() 是异步的,因此您必须在 query() 回调中调用 query() 之后移动代码,如下所示:

app.get('/', function(req, res, next) {
  var sql = 'SELECT * FROM menu WHERE id = 1';
  connection.query(sql, function(err, results) {
    if (err) return next(err);
    for (var i = 0, len = results.length; i < len; ++i) {
      var sqlResult = results[i];
      console.log(sqlResult['address'], sqlResult['text']);
    }
    res.render('index', {
      address: results[0].address,
      text: results[0].text
    });
  });
});

关于javascript - Node.js + Node-MySQL + Express 4 + Mustache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23598114/

相关文章:

node.js - Babel 7 中的外部导入不会被转译

PHP/Mysqli 缓存 mysql 主机?不尊重低 TTL

javascript - 检测 Edge Legacy 浏览器,而不是 Edge Chromium

javascript - tinymce,通过主窗口上的单击按钮从对话框中获取输入字段值

javascript - AngularJS:系统日期更改时调用函数

php - 组合两个 MYSQL 查询以仅获取好友的帖子

mysql - mysql如何让条件或条件优先于其他条件?

node.js - 我们如何检测我们的脚本是通过命令行还是通过浏览器启动?

node.js - 火力基地。错误 "Request contains an invalid argument."

javascript - 使用 passthru 将变量从 ajax 结果发送到 php