AngularJS 1.5返回404,而Express路由正在运行



我可以通过转到"/api/users"来查看我的数据库数据。然而,当尝试使用AngularJS 1.5获取数据时,我得到了404。

我认为问题是Angular路由试图在不存在的情况下访问实际的url。但我相当确定,我的快速路由是在任何类型的带有该url的GET上返回数据。我真的是AngularJS的新手,所以请原谅我。

这是我的Angular

var app = angular.module('app', ['ngRoute']);
app.controller('HomeController', function($http){
var vm = this;
vm.title = "Users";
vm.users = [];
vm.getUsers = function(){
$http.get('../api/users').then(function(response){
vm.users = response.data;
},
function myError(response) {
vm.title = response.statusText;
});
};
vm.getUsers();
return true;
});
app.config(function($routeProvider) {
$routeProvider.when('/', {
controller: 'HomeController',
controllerAs: 'vm',
templateUrl: './home.html'
});
$routeProvider.otherwise('/');
});

这是server.js

var Model = require('./models/models.js');
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var morgan = require('morgan'); 
var app = express();
var db = "mongodb://localhost/mean_stack";
mongoose.connect(db, function(err, response){
if(err){
console.log('Failed to connect to ' + db);
}else{
console.log('Successfully connected to ' + db);
}
});
var router = express.Router();

router.get('/apis/users', function(request, response){
Model.find({}, function(err, users){
if(err){
response.status(404).send(err);
}else{
response.status(200).send(users);
}
});
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/', router);
app.use(morgan('dev'));
app.use(express.static(__dirname + '/public'));
var port = process.env.PORT || 3000
app.listen(3000, function(){
console.log('Listening on port ' + port);
});

我可能错过了一些非常基本的东西,我似乎就是想不出来。我还用我正在使用的教程代码对它进行了测试,讲师的代码运行得很好。我的server.js的顺序错了吗?

尝试删除Angular$http.get()上的../相对路径。这不应该是一条相对路径。

var app = angular.module('app', ['ngRoute']);
app.controller('HomeController', function($http) {
var vm = this;
vm.title = "Users";
vm.users = [];
vm.getUsers = function() {
$http.get('api/users').then(function(response) {
vm.users = response.data;
},
function myError(response) {
vm.title = response.statusText;
});
};
vm.getUsers();
return true;
});
app.config(function($routeProvider) {
$routeProvider.when('/', {
controller: 'HomeController',
controllerAs: 'vm',
templateUrl: './home.html'
});
$routeProvider.otherwise('/');
});

同样在快递方面,我注意到你得到的路线可能有拼写错误。一个‘s’意外添加到‘api’?

router.get('/api/users', function(request, response){
Model.find({}, function(err, users){
if(err){
response.status(404).send(err);
}else{
response.status(200).send(users);
}
});
});

希望这能有所帮助!

最新更新