将SQL数据发布到带有NodeJS的角度视图
问题描述:
我很难发布使用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 + '!')
})
答
你必须明白这些代码做什么,以及如何和的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上的承诺和其他教程,它是一个很好的开始节点的地方:)
谢谢,我开始玩弄res.send和res.json,并获取数据到视图。 – JNH75