2016-01-18 57 views
0

同一主題有幾個問題,但我無法解決我的問題。錯誤:.post()需要回調函數,但得到[對象未定義]不起作用

Error: Route.post() requires callback functions but got a [object Undefined] 
at Route.(anonymous function) [as post] (/home/kevin/proyectoApp/node_modules/express/lib/router/route.js:196:15) 
at EventEmitter.app.(anonymous function) [as post] (/home/kevin/proyectoApp/node_modules/express/lib/application.js:481:19) 
at module.exports (/home/kevin/proyectoApp/app/rutas.js:7:5) 
at Object.<anonymous> (/home/kevin/proyectoApp/index.js:21:26) 
at Module._compile (module.js:398:26) 
at Object.Module._extensions..js (module.js:405:10) 
at Module.load (module.js:344:32) 
at Function.Module._load (module.js:301:12) 
at Function.Module.runMain (module.js:430:10) 
at startup (node.js:141:18) 
at node.js:1003:3 

Index.js

var express=require('express'); 
var app=express(); 
var morgan=require('morgan') 
var mongoose=require('mongoose'); 
var bodyParser=require('body-parser'); 
var methodOverride=require('method-override'); 

mongoose.connect('mongodb://localhost/local'); 


app.use(express.static(__dirname+'/public')); 
app.use(morgan('dev')); 
app.use(bodyParser.urlencoded({ extended: false })) 
app.use(bodyParser.json()) 


//Endpoints 
require('./app/rutas.js')(app); 


var server=app.listen(3001,function() { 
var host = "localhost"; 
var port = server.address().port; 

console.log('servidor escuchando en http://%s:%s', host, port);}); 
module.exports=app; 

rutas.js

var Controller=require('./controller.js'); 
var User=require('./models/user.js'); 

module.exports=function(app){ 

app.get('/user/all',Controller.Read); 

app.put('/user/all/:todo_id',Controller.Update); 

app.post('/user/all',Controller.Create); 

app.delete('/user/all/todo_id',Controller.Delete); 


app.get('/',function(req,res){ 
console.log("Este si carga"); 
res.sendFile('./public/index.html'); 
}); 
} 

user.js的

var mongoose=require('mongoose'); 
var Schema=mongoose.Schema; 

var Schemausuario=new Schema({ 
nombre:String, 
apellido:String, 
username:{type:String,requiere:true,unique:true} 
}); 

var User=mongoose.model('User',Schemausuario); 

module.exports=User; 

controller.js

var User=require('./models/user.js'); 

var Create=function (req,res){ 
var nombre=req.body.nombre; 
var apellido=req.body.apellido; 
var nick=req.body.username; 
console.log("Datos"+nombre+apellido+nick); 
User.create({ 
nombre:nombre, 
apellido:apellido, 
username:nick 

},function(err,usr){ 

if(err) console.log("Error al crear el usuario"); 
else{ 
    console.log("Usuario creado correctamente"); 
} 
}); 

User.find({},function(err,user){ 
if(err) console.log("Hay un error al buscar los usuarios"); 
else{ 
    console.log("Los usuarios encontrados son "+user) 
     res.json(user); 
      }   
}); 

}; 


var Read=function (req,res){ 

User.find({},function(err,user){ 
if(err) return console.log("error="+err); 
else{ 
     res.json(user); 
      }   
}); 
}; 



var Update=function(req,res){ 
User.update({_id : req.params.todo_id}, 
       {$set:{nombre : req.body.nombre,apellido: req.body.apellido, username: req.body.username}}, 
       function(err, persona) { 
        if (err) 
         res.send(err); 

      // Obtine y devuelve todas las personas tras crear una de  ellas 
      User.find(function(err, user) { 
       if (err) 
        res.send("Ha habido un error"+err) 
       console.log("Se va a enviar "+persona) 
       res.json(user); 
      }); 
     }); 
}; 


var Delete=function(req,res){ 

    User.remove({ 
    _id: req.params.todo_id 
}, function(err, todo) { 
    if(err){ 
     res.send("Hay un error hdp"+err); 
    } 
    else{ 
     console.log("Usuario eliminado correctamente") 
    } 
    }); 

    User.find({},function(err, todos) { 
     if(err){ 
      res.send(err); 
     } 
     res.json(todos); 
    }); 
}; 

module.exports={ 
Create:Create, 
Update:Update, 
Read:Read, 
Delete:Delete 
} 

我使用的版本 「表達」, 「^ 4.13.3」

你能幫助我嗎?謝謝。 我會上傳它的任何其他細節發現省略。 我會上傳它的任何其他細節發現省略。

回答

7

取而代之的是:

app.post('/user/all',Controller.Create); 

您嘗試:

app.post('/user/all', function(req, res){ 
    Controller.Create 
}); 
+0

感謝,我開始運行。 –

+1

@Kevin AB接受答案,如果它真的解決了你的問題。這樣對其他人會有幫助。 – Subburaj

+1

@KevinAB嗨你能解釋爲什麼這不起作用:'app.post('/ user/all',Controller.Create);' – btzr

相關問題