我很难用mysql和节点发布从服务器检索到的数据。我已成功连接到我的数据库,并且在运行" node server.js"时,我可以通过控制台将所需数据返回到CLI。但是,我不确定如何将此数据发布到我的Angular视图中。控制台日志记录没问题,但这并不能帮助我获取应用程序的数据。
目前,我只是想将数据传输到index.html,这是我的主要视图,并保留了Angular路由的ng-view部分。我可能遗漏了一些明显的东西,我是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 :(得分:0)
您必须了解此代码的作用,以及nodejs和angular如何协同工作。 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的承诺和其他教程。 ,这是一个以节点开始的好地方:)