Я не понимаю, что делать с литой ошибкой в моем приложении MEAN.MEAN Stack: Cast to ObjectId не удалось присвоить значение «: id»
Я довольно новый для MEAN и REST ... Я создал приложение для управления проектами. Получение всех проектов в списке, wasn'ta проблемы, но теперь, когда я пытаюсь получить детальное представление одного проекта GET /projects/:id
, я получаю эту ошибку:
Cast Error: Vast to ObjectId failed for value :id at path _id
I'm с помощью Mongoose схемы для моих проектов:
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);
});
});
И последнее, но не менее мой Угловая шаблон для зрения детализации:
<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>
Я получаю гайки с этой ошибкой. Надеюсь, ты поможешь мне.
С наилучшими пожеланиями из Германии, Дэвид
РЕШЕНИЕ:
Перепробовав несколько вещей, мне удалось заставить его работать. Благодаря плюсам и фразам за их помощь! Так вот решение, как я могу получить идентификатор из моего URL:
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;
});
});
Вы сделали мой день, ребята, спасибо!
Вы заменяющий ': id' с любыми полезными данными? Похоже, вы просто отправляете эту строку, поэтому, очевидно, она ожидает, что значение параметра '_id' в вашем mongodb будет перевариваться. – frhd
Я хочу, чтобы сервер выводил ID из моего URL-адреса, потому что я уже на странице подробностей, например: http: // localhost: 3001/projects/5534f541849d5170126a778d'. Я получаю способ 'req.params.id' работает неправильно? –
Во-первых, вы должны указать углы URL-адреса и заменить «: id» на требуемый параметр. Для этого вам, по крайней мере, понадобится что-то вроде 'ngRoute'. – frhd