2015-10-06 32 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

相关问题