2013-08-30 38 views
4

我目前正在使用Express + Node的應用程序。我最近增加了一個新的.post路線app.js文件,使用以下語法:Node + Express .post路徑拋出錯誤。預期的回調,得到對象

var posts = require('./routes/posts.js'); 

而且saveComment被定義爲這樣:

app.post('/api/posts/saveComment', posts.saveComment); 

posts如上定義

exports.saveComment = function(req, res) { 
    //function stuff in here, yada yada 
} 

現在,當我嘗試運行應用程序時,節點發生錯誤:

Error: .post() requires a callback functions but got a [object Undefined] 

saveComment顯然是一個函數,我不理解它爲什麼看不到這個。我在saveComment之上定義了另一個功能,我可以毫無錯誤地完全引用,但是將該功能內容複製到saveComment仍然會產生相同的錯誤。我很茫然,任何幫助都非常感謝。的posts.js

var mongo = require('../mongo.js'); 

exports.queryAll = function(req, res) { 
    var db = mongo.db; 

    db.collection('posts', function(err, collection) { 
     collection.find().toArray(function(err, doc) { 
      if (err) 
       res.send({error:err}) 
      else 
       res.send(doc) 

      res.end(); 
     }); 
    }); 
} 

exports.saveCommment = function(req, res) { 
    var db  = mongo.db, 
     BSON = mongo.BSON, 
     name = req.body.name, 
     comment = req.body.comment, 
     id  = req.body.id; 

    db.collection('posts', function(err, collection) { 
     collection.update({_id:new BSON.ObjectID(id)}, { $push: { comments: { poster:name, comment:comment }}}, function(err, result) { 
      if (err) { 
       console.log("ERROR: " + err); 
       res.send(err); 
      } 
      res.send({success:"success"}); 
      res.end(); 
     }); 
    }); 
} 
+0

你能否顯示模塊帖子的導出? – syned

+0

@syned - 發佈內容 – tymeJV

+1

這真的很尷尬......'saveComment'在'posts.js'中有3個m。我要去睡午覺。 – tymeJV

回答

10

嗯......尷尬的回答,saveCommment與3M公司在我posts.js定義。啊。

+0

+1是的,createinstance而不是createInstance。好答案!!! –

+0

原始錯誤信息已經提示,它是錯字..'toString.call(undefined)'==='[object Undefined]';) –

0

我按照以下方式編寫我的出口。也許這將幫助你:)

module.export = { 
    savecomment : function(){ 
     yada yada 
     }, 
    nextfunction : function(){ 
    } 
    } 

使用功能:

var helper = require('helper.js') 

helper.savecomment(); 
+0

我會在一分鐘內給它一個鏡頭,將回報 – tymeJV