2015-04-21 2 views
0

Я не понимаю, что делать с литой ошибкой в ​​моем приложении 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; 
       }); 
      }); 

Вы сделали мой день, ребята, спасибо!

+1

Вы заменяющий ': id' с любыми полезными данными? Похоже, вы просто отправляете эту строку, поэтому, очевидно, она ожидает, что значение параметра '_id' в вашем mongodb будет перевариваться. – frhd

+0

Я хочу, чтобы сервер выводил ID из моего URL-адреса, потому что я уже на странице подробностей, например: http: // localhost: 3001/projects/5534f541849d5170126a778d'. Я получаю способ 'req.params.id' работает неправильно? –

+0

Во-первых, вы должны указать углы URL-адреса и заменить «: id» на требуемый параметр. Для этого вам, по крайней мере, понадобится что-то вроде 'ngRoute'. – frhd

ответ

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

Это ваша ошибка. Ваш вызов ajax отправляется с строкой :id вместо обычного значения.

Вам нужно разобрать идентификатор из текущего URL, а затем передать его в параметр $http.get URL-адреса

+0

Спасибо за ваше быстрое объяснение, я понимаю, что мне приходится разбирать идентификатор с моего URL-адреса и попробовать его уже с помощью '$ routeParams', но до сих пор не знаю, почему он не работает. Не могли бы вы привести мне пример? –

+0

Я пробовал это с чем-то подобным, но, к сожалению, без успеха: \t ' ' –