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 参数
我越来越无能为力了,如何处理我的 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 参数