从未调用nodeJS和AngularjS -app.get方法

时间:2016-05-03 22:31:41

标签: angularjs node.js express

我真的不知道我做错了什么...但我的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()我想......

1 个答案:

答案 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'}); 
}]);