使用NodeJS将SQL数据发布到Angular View

时间:2017-02-14 19:10:14

标签: angularjs node.js

我很难用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 + '!')
})

1 个答案:

答案 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的承诺和其他教程。 ,这是一个以节点开始的好地方:)