我真的不知道我做错了什么...但我的app.get功能不起作用..当我尝试在Chrome中查看网络时..有一个HTTP状态302发现..但它永远不会去在服务器端进入该功能..我真的不知道我做错了什么..请帮助。 。或者询问更多信息我不知道什么应该是重要的.. 这是我的server.js函数:
app.get('/api/tests/:id', function(req, res, next) {
console.log('get tests id')
console.log(req.params.id)
Test.findById(req.params.id, function(err, test) {
if (err) return next(err);
console.log(test)
res.send(test);
});
});
这里是app.js Angular rouiting ..
.when('/tests/:id',{
templateUrl: 'templates/testView.html',
controller: 'TestViewCtrl'
})
.otherwise({
redirectTo: '/'
});
这是我的HTML menu.html文件..我想去那个特定的地址:
<div ng-repeat="test in tests">
<div>
<a href="/tests/{{test._id}}">{{test.testName}}</a>
</div>
</div>
..在控制器menu.html中我有post方法,因为GET方法也不起作用..
$scope.getTests = function () {
$http.post('/api/getTestText')
.success(function (data) {
$scope.tests = data;
并且每个测试的详细页面都是我的HTML,直到空白..但在Controller中我有这样的东西:
.controller('TestViewCtrl', ['$scope', '$http','$routeParams','Test', function ($scope, $http, $routeParams, Test) {
Test.get({_id: $routeParams.id},function(test){
$scope.test=test;
console.log($scope.test)
并测试factory.js:
.factory('Test', ['$resource', function ($resource) {
return $resource('/api/tests/:id');
}]);
我不这么认为问题是在前端...但也许是.. 我从谷歌Chrome应用程序中听到了一些关于邮递员应用的信息......但是当我在那里输入我的HTTP电话时..
localhost:3000 / api / tests /作为参数我将_id和IDvalue设置为值..结果与我单击菜单项时的结果相同..
localhost:3000/api/tests?id=5726aa164a26bbe4180700ea
但是console.log没有在server.js那边工作..所以它永远不会进入app.get()我想......
答案 0 :(得分:0)
您需要将正文中的_id
字段映射到网址参数中的:id
。
要实现这一目标,请更改:
.factory('Test', ['$resource', function ($resource) {
return $resource('/api/tests/:id');
}]);
分为:
.factory('Test', ['$resource', function ($resource) {
//This plugs in the _id field from the body and injects it into the url param.
//This is an example with mongodb default _id field assuming that's what you use.
return $resource('/api/tests/:id', {id: '@_id'});
}]);