2015-09-05 36 views
1

有回調不知道爲什麼這不起作用...我有工作的用戶系統,我基本上只是複製該系統。不知道爲什麼一個工作,另一個不工作。我省略了不相關的代碼,並且因爲懶惰而將作業包含在用戶模型文件中。 ()/()/ postjob',jobs.createJob);如果你有一個對象沒有定義,那麼這個對象就是這個對象。觸發錯誤。錯誤:Route.post()需要回調函數,但得到[對象未定義]

[index.js] 
mongoose.connect(uri); 
require('./models/users_model.js'); 
require('./routes/routes.js')(app); 

[routes.js] 
module.exports = function(app){ 

    var jobs = require('../controllers/jobs_controller.js'); 

    app.all('/postjob', function(req, res){ 
     if (typeof req.session !== 'undefined' && req.session.user) { 
      res.redirect('/'); 
     } 
     res.render('pages/login', {msg:req.session.msg}); 
    }); 

    app.post('/postjob', jobs.createJob); 
} 



[jobs_controller.js] 
var mongoose = require('mongoose'), 
    Job = mongoose.model('Job'); 

module.exports = function(app){ 

    exports.createJob = function(req, res){ 

     var job = new Job({created: Date.now}); 
     job.set('title', req.body.title); 
     job.set('description', req.body.description); 
     job.set('hours', req.body.hours); 
     job.save(function(err){ 
      if (err) { 
       alert(err); 
      } 
      else { 
       alert('Job Posted Succesfully'); 
      } 
     }); 

    } 

}; 

[users_models.js] 
var mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 

var UserSchema = new Schema ({ 
    username: { type: String, unique: true }, 
    email: String, 
    color: String, 
    hashed_password: String 
}); 

mongoose.model('User', UserSchema); 

var JobSchema = new Schema ({ 
    created: Date, 
    postedBy: String, 
    title: String, 
    description: String, 
    hours: String, 
    applicants: String, 
    closed: Date 
}); 

mongoose.model('Job', JobSchema); 
+0

請提供你正在得到的錯誤 –

回答

2

我認爲問題存在於您的jobs_controller.js。試着用

exports.createJob = function(req, res){ 

     var job = new Job({created: Date.now}); 
     job.set('title', req.body.title); 
     job.set('description', req.body.description); 
     job.set('hours', req.body.hours); 
     job.save(function(err){ 
      if (err) { 
       alert(err); 
      } 
      else { 
       alert('Job Posted Succesfully'); 
      } 
     }); 

    }; 

替換下面的代碼

module.exports = function(app){ 

    exports.createJob = function(req, res){ 

     var job = new Job({created: Date.now}); 
     job.set('title', req.body.title); 
     job.set('description', req.body.description); 
     job.set('hours', req.body.hours); 
     job.save(function(err){ 
      if (err) { 
       alert(err); 
      } 
      else { 
       alert('Job Posted Succesfully'); 
      } 
     }); 

    } 

}; 

,並確保您發送的響應,而不是把警報。

+0

謝謝Rudra它現在編譯並加載到localhost ..我將不得不在未來的日子裏測試功能。 –

相關問題