MEAN Stack:转换为ObjectId失败的值":id"

时间:2015-04-21 09:58:16

标签: angularjs mongoose mean

我变得一无所知,如何处理我的MEAN应用程序中的Cast Error。

我是MEAN和REST的新手......我已经建立了一个项目管理应用程序。 将所有项目放在列表中并不是问题,但现在当我试图获得一个项目GET /projects/:id的详细视图时,我收到此错误:
Cast Error: Vast to ObjectId failed for value :id at path _id

我正在为项目使用Mongoose Schema:

var mongoose    = require ('mongoose');

var projectSchema = mongoose.Schema({  
        name        : String,  
        description : String,  
        tags        : String,  
        media       : {data: Buffer, contentType: String},  
        updated_at  : {type: Date, default: Date.now }  
});

My Route看起来像这样:

app.get('/projects_view/:id', function (req, res, next) {  
    Project.findById(req.params.id, function (err, project) {  
        if (err) return next (err);  
        res.json(project);  
    }); 
});  

最后但并非最不重要的是我的详细视图的Angular模板:

<div class="container text-center">
            <div ng-controller="ProjectController">
                    {{ project.name }}
            </div>
        </div>

<script>
     var app = angular.module('myApp', []);

        app.controller('ProjectController', function($scope, $http){
        $http.get('/projects_view/:id').then(function(res){ 
            $scope.project = res.data;
            });
        });
</script>

我对这个错误感到疯狂。希望你能帮帮我 来自德国的亲切问候, 大卫

SOLUTION:
在尝试了一些事情之后,我设法让它发挥作用。感谢plus-和frhd的帮助! 所以这是解决方案,我如何从我的URL中获取ID:

app.controller('ProjectController',  function($scope, $http){
            var url = window.location.pathname;
            var id = url.substring(url.lastIndexOf('/') + 1);
            $http.get('/projects_view/'+id).success(function(data){ 
                $scope.project = data;
                 });
            });

你做了我的一天,谢谢你!

1 个答案:

答案 0 :(得分:0)

$http.get('/projects_view/:id')....

这是您的错误所在。这里的ajax调用是使用字符串:id硬编码而不是实际值发送的。

您需要解析当前网址中的ID,然后将其传递给$http.get网址参数