2017-02-14 45 views
0

我很难发布使用mysql和节点从服务器检索到的数据。我已成功连接到数据库,并且在运行“node server.js”时,我可以通过控制台将所需数据返回到CLI。但是,我不确定如何将这些数据发布到我的Angular视图中。没有问题的控制台日志记录,但这并不能帮助我获取数据到应用程序。将SQL数据发布到带有NodeJS的角度视图

目前,我只是试图将数据获取到index.html,这是我的主要视图,并拥有Angular路由的ng-view部分。我可能错过了一些明显的bc,我是NodeJS的新手。

// MODULES 

var express = require('express'); 

var app = express(); 

var port = process.env.PORT || 3000; 

var mysql = require('mysql'); 

var serveStatic = require('serve-static'); 

var bodyParser = require('body-parser'); 


var source = __dirname + '/public/views/index.html'; 

app.use(serveStatic(__dirname, {'index': ['index.html']})); 

app.route('/*') 
    .get(function(req, res) { 

    res.sendFile(source); 
    }); 


var data; 

var connection = mysql.createConnection({ 
    host  : 'thehostdb', 
    user  : 'username', // credentials correct, connection works 
    password : 'pw', 
    database : 'db', 
    port: '3306' 
}); 

connection.query('SELECT * from poemTable', function(err, rows, fields) { 
    if (!err) { 

     data = JSON.stringify(rows); 

     setDataValue(data); 

} 
    else { 
     console.log('Error while performing Query:', err); 
    } 
}); 

function setDataValue(value) { 

    data = value; 

    console.log(data); //Where the data logs 
} 


app.listen(port, function() { 
    console.log('Example app listening on port' + port + '!') 
}) 

回答

0

你必须明白这些代码做什么,以及如何和的NodeJS角度都应该共同努力。 Angular被提供给客户端,然后由客户端浏览器呈现。所以如果你想要inject数据,你必须取回它。因此,在您的角度应用当控制器开始进行API调用,并在你的服务器上创建新的路径:

app.get('/data', function(req, res, next) { 
    connection.query(..., function(err, rows, fields) { 
     res.json(rows); 
    }); 
}); 

确保了解节点和它的async本质,什么是event loop以及它是如何工作的,什么是callback hell,我也会去看看nodeschool.io上的承诺和其他教程,它是一个很好的开始节点的地方:)

+0

谢谢,我开始玩弄res.send和res.json,并获取数据到视图。 – JNH75

相关问题