MEAN Stack:转换为 ObjectId 值“:id”失败

MEAN Stack: Cast to ObjectId failed for value ":id"

我越来越无能为力了,如何处理我的 MEAN 应用程序中的转换错误。

我对 MEAN 和 REST 还很陌生...我构建了一个项目管理应用程序。 获取列表中的所有项目不是问题,但现在当我尝试获取一个项目的详细视图时 GET /projects/:id,我收到此错误:
Cast Error: Vast to ObjectId failed for value :id at path _id

我正在为我的项目使用猫鼬模式:

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 }  
});

我的路线是这样的:

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>

这个错误让我抓狂。希望你能帮助我。
来自德国的亲切问候, 大卫

解决方案:
在尝试了一些东西之后,我设法让它工作了。感谢 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;
                 });
            });

伙计们,你们成就了我的一天,谢谢你们!

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

这就是你的错误所在。您在此处的 ajax 调用发送的字符串 :id 是硬编码的,而不是实际值。

您需要从您当前的 url 中解析出 id,然后将其传递给 $http.get url 参数