2013-11-20 73 views
0

所以我试图建立一个基本的Todo列表/ CRUD应用程序使用MEAN堆栈(Angular,MongoDB,Nodejs,Express),当我切换时遇到麻烦路径和模型,并尝试在我的命令提示符下通过节点服务器加载应用程序。当我移动任何东西时,下面的错误是通过命令提示符错误得到的。只是一个参考,我是一个总NOOB。404错误尝试加载平均网络应用程序

App listening on port 3000 
GET /api/todos 404 2ms 

GET /api/todos 500 7ms - 1.36kb 

ReferenceError: Todo is not defined 



at app.delete.Todo.remove._id (C:\Users\Basel\WebstormProjects\TEST\node-tod 
o-tut1-starter\server.js:41:3) 
    at callbacks (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-starter\no 
de_modules\express\lib\router\index.js:164:37) 
    at param (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-starter\node_m 
odules\express\lib\router\index.js:138:11) 
    at pass (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-starter\node_mo 
dules\express\lib\router\index.js:145:5) 
    at Router._dispatch (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-sta 
rter\node_modules\express\lib\router\index.js:173:5) 
    at Object.router (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-starte 
r\node_modules\express\lib\router\index.js:33:10) 
    at next (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-starter\node_mo 
dules\express\node_modules\connect\lib\proto.js:193:15) 
    at Object.methodOverride [as handle] (C:\Users\Basel\WebstormProjects\TEST\n 
ode-todo-tut1-starter\node_modules\express\node_modules\connect\lib\middleware\m 
ethodOverride.js:48:5) 
    at next (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-starter\node_mo 
dules\express\node_modules\connect\lib\proto.js:193:15) 
    at multipart (C:\Users\Basel\WebstormProjects\TEST\node-todo-tut1-starter\no 
de_modules\express\node_modules\connect\lib\middleware\multipart.js:86:27) 
app.post('/api/todos', function(req, res) { 

    // create a todo, information comes from AJAX request from Angular 
    Todo.create({ 
     text : req.body.text, 
     done : false 
    }, function(err, todo) { 
     if (err) 
      res.send(err); 

     // get and return all the todos after you create another 
     Todo.find(function(err, todos) { 
      if (err) 
       res.send(err) 
      res.json(todos); 
     }); 
    }); 

}); 

// delete a todo 
app.delete('/api/todos/:todo_id', function(req, res) { 
    Todo.remove({ 
     _id : req.params.todo_id 
    }, function(err, todo) { 
     if (err) 
      res.send(err); 

     // get and return all the todos after you create another 
     Todo.find(function(err, todos) { 
      if (err) 
       res.send(err) 
      res.json(todos); 
     }); 
    }); 
}); 

// application ------------------------------------------------------------- 
app.get('*', function(req, res) { 
    res.sendfile('./public/index.html'); // load the single view file (angular will handle the page changes on the front-end) 
}); 

回答

0

(假设您从客户端发送正确的_id),您必须将_id重建为BSON对象。 不知道你用什么数据库驱动程序,但在mongoskin它是这样说:

var mongo = require('mongoskin'); 
var BSON = mongo.BSONPure; 

... 

var proper_id = BSON.ObjectID(req.params.todo_id) 

mangoose尝试以下操作:

var todo = Todo.find({_id : req.params.todo_id}); 
todo.remove(callback(err, todo)); // callback is optional 
+0

使用猫鼬!我会试试这个。 – user2993058

+0

它必须支持BSON对象 –

相关问题