通过express和Angular从MySql db中检索数据

时间:2016-08-09 09:47:16

标签: node.js express

我正在尝试通过node / express将我的MySql数据库中的一些数据检索到我的Angular控制器,但是我在路由方面遇到了一些问题。

在角度控制器中,我有一个执行get请求的加载函数:

    $scope.load = function ()  {
        $http.get('/users').
            success(function(data, status, headers, config) {
                console.log('success');
                $scope.todos = data;
                console.log(data);
                console.log($scope.todos);

            }).
            catch(function(data, status, headers, config) {
            console.log('catch');
            console.log(status);
                console.log(data);
            });
    };

在我的app.js中我有:

var users = require('./routes/users');
app.use('/users', users);

在我的routes / users.js文件中,我有:

    var express = require('express');
    var router = express.Router();
    var pool = require('../connection');

    /* GET users listing. */
    router.get('/users', function(req, res, next) {

        pool.getConnection(function(err, connection){
            connection.query('SELECT * FROM `users` WHERE `first_name` = "Kees"', function(err, results){
                if(err) {
                    throw err;
                }else{
                    console.log(results);
                }
            });

            connection.release();
        });
    });

    module.exports = router;

当我在视图中触发load()函数时,app.js日志返回:

  

GET / users 404 54.369 ms - 1846

浏览器显示:

  

获取http://localhost:3000/users 404(未找到)

     

捕获

     

Object {data:“”,status:404,config:Object,statusText:“Not Found”}

通过Express检索数据的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

在您的app.js中,您已经为/users的所有来电设置了路线。这意味着您的users.js文件中的所有http请求已经在url中具有该请求。 所以这个:

router.get('/users', function(req, res, next)

实际上是从example.com/users/users调用的。

只需这样写:

router.get('/', function(req, res, next)