2015-10-06 34 views
0

您好我正在構建一個應用程序,使用平均堆棧,並使用角度控制器成功加載初始數據。但是,當添加用戶時,它會嘗試將用戶對象發佈到服務器端,但是「/ api/contacts」返回錯誤500,(TypeError:undefined不是函數)。代碼如下:使用angularjs發佈從express節點到mongodb的數據

//完整的錯誤消息:

TypeError: undefined is not a function 
    at module.exports.postcontactlist (/Users/Sites/express/api/contacts.js:22:11) 
    at callbacks (/Users/Sites/express/node_modules/express/lib/router/index.js:164:37) 
    at param (/Users/Sites/express/node_modules/express/lib/router/index.js:138:11) 
    at pass (/Users/Sites/express/node_modules/express/lib/router/index.js:145:5) 
    at Router._dispatch (/Users/Sites/express/node_modules/express/lib/router/index.js:173:5) 
    at Object.router (/Users/Sites/express/node_modules/express/lib/router/index.js:33:10) 
    at next (/Users/express/node_modules/express/node_modules/connect/lib/proto.js:193:15) 
    at Object.methodOverride [as handle] (/Users/Sites/express/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:48:5) 
    at next (/Users/Sites/express/node_modules/express/node_modules/connect/lib/proto.js:193:15) 
    at Object.urlencoded [as handle] (/Users/Sites/express/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:46:27) 
    at next (/Users/Sites/express/node_modules/express/node_modules/connect/lib/proto.js:193:15) 
    at /Users/Sites/express/node_modules/express/node_modules/connect/lib/middleware/json.js:91:7 
    at IncomingMessage.onEnd (/Users/Sites/express/node_modules/express/node_modules/connect/node_modules/raw-body/index.js:57:7) 
    at IncomingMessage.g (events.js:199:16) 
    at IncomingMessage.emit (events.js:104:17) 
    at _stream_readable.js:908:16 
POST /api/contacts 500 4ms - 1.69kb 

//server.js路線

var contactlist = require("./api/contacts"); 
... 
app.get("/api/contacts", contactlist.getcontactlist); 
app.post("/api/contacts", contactlist.postcontactlist); 

///api/contacts.js

var express = require("express"); 
var http = require("http"); 
var bp = require("body-parser"); 
var mongoose = require("mongoose"); 
var schema = require("../models/contactsdb"); 

var Contact = mongoose.model("Contact", schema.contactSchema, "contactlist"); 

    module.exports = { 

     getcontactlist : function (request, response) { 

      Contact.find({ }, function (err, docs) { 
       response.send(docs); 
      }); 

     }, 

     postcontactlist : function(request, response){ 

    console.log("request: " + request.body); 

    Contact.insert({ "name" : "Vincent Moyet", "email" : "[email protected]", "number" : "0987654321" }, function(err, docs){ 

     if(err){ 

      var errorMsg = "error: " + err.message; 
      console.log(errorMsg); 
      response.status(500).send(err); 

     } else { 
      console.log("success"); 
      response.status(200).end(); 
     } 
    }); 
} 

    }; 

有人可以開導哪裏im出錯了?

回答

1

[我張貼另一個答案的問題,筆者改寫他們的問題 - @learningAngularIsFrustrating:你應該寫了一個新問題而不是做你的原來的這麼大的編輯]

第2行的代碼是什麼「((/Users/Sites/express/api/contacts.js:22:11)?我想這是insert和認爲你可能會更好與save(這就是我用在你的類似情況)

var contact = new Contact({ "name" : "Vincent Moyet", "email" : "[email protected]", "number" : "0987654321" }) 
contact.save(function(err, docs){...}); 
+0

嗨Simon H,道歉我對Stackflow還是比較新的。 我試過「.save」而不是「.insert」,但收到相同的確切錯誤信息。好,請問 – vicgoyso

+0

好。但是你可以通過查看錯誤信息 –

+0

中的行號來檢查它沒有找到哪個函數,但是我已經完成了,但是不能確定它不工作的原因,除了Im仍然是node express的新手。 – vicgoyso

2

看起來你沒有報告成功返回給客戶端

postcontactlist : function(request, response){ 

     Contact.insert(request.body, function(err, docs){ 
        if(err){ 
         console.log("error: " + err.message); 
       ---> response.status(500).send(err) 
        } else { 
         console.log("success"); 
       ---> response.status(200).end() 
        } 
     }); 

    } 
+0

嗨,Simon H,我已經使用您的建議更新了我的代碼,並添加了正在發佈內容的屏幕截圖。我甚至現在直接插入對象。但仍然返回500錯誤狀態。 – vicgoyso

+0

你在節點consle中得到什麼信息。我不認爲這是一個角度的問題,但你的服務器不工作,出於某種原因,張貼來自客戶端的圖片不會幫助 –

+0

嗨,Simon H,ive更新了主要帖子,現在包括完整的錯誤堆棧。看看https://github.com/molnarg/node-http2/issues/100。但是,仍然無法確定錯誤的來源。 – vicgoyso

相關問題