我正在尝试通过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检索数据的正确方法是什么?
答案 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)