我变得一无所知,如何处理我的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;
});
});
你做了我的一天,谢谢你!
答案 0 :(得分:0)
$http.get('/projects_view/:id')....
这是您的错误所在。这里的ajax调用是使用字符串:id
硬编码而不是实际值发送的。
您需要解析当前网址中的ID,然后将其传递给$http.get
网址参数