NodeJS:返回未定义的数据类型

Posted

技术标签:

【中文标题】NodeJS:返回未定义的数据类型【英文标题】:NodeJS: Datatype returned undefined 【发布时间】:2016-04-24 16:19:20 【问题描述】:

这是我的 controller.js

$scope.saveDetails = function()
     if($scope.editMode == false)
    //$scope.hidesave = false;
    //$scope.person = "";
    console.log("i am in save")
    console.log($scope.person);
    $http.post('/details',$scope.person).success(function(response)
        console.log(response);
        refresh();
    )
    $state.go("itemList");

这是我的 Route.JS

module.exports = function (app)
    console.log("Inside Routes");

    app.get('/details', require('./details/details').getDetails);   
    app.get('/details/:id', require('./details/details').getDetails_id);
    app.post('/details', require('./details/details').saveDetails);
    app.delete('/details/:id',require('./details/details').deleteDetails);
    app.post('/details/:id',require('./details/details').updateDetails);
;

这是我的 details.js,实际实现是:

exports.saveDetails = function (req, res) 
    console.log("Hi");
    console.log("this is to save: ",req.body);
    var person = new req.app.schema.detailsdb(req.body);
    person.save(req.body,function(err,docs)
        res.json(docs);
        console.log("docs: ",docs)
    );
;

当我尝试将数据从 html 页面插入 DB 时,这里 req.body 返回 undefined,我使用 Mongoose 编写了 DB

【问题讨论】:

你是否包含了 express body-parser 中间件? 【参考方案1】:

要解析 JSON,您需要包含 express body-parser 模块并在路由之前使用它:

var bodyParser = require('body-parser')

// parse application/json
app.use(bodyParser.json())

// the rest of your routes here.

app.get('/details', require('./details/details').getDetails);   
app.get('/details/:id', require('./details/details').getDetails_id);
app.post('/details', require('./details/details').saveDetails);
app.delete('/details/:id',require('./details/details').deleteDetails);
app.post('/details/:id',require('./details/details').updateDetails);

https://github.com/expressjs/body-parser/blob/master/README.md

【讨论】:

谢谢,这解决了我的错误...非常感谢您.. :)

以上是关于NodeJS:返回未定义的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

nodejs/mongoDB - 类型错误:无法读取未定义的属性“集合”

要求函数的返回数据变为未定义(Js,NodeJs,Discord.js)[重复]

NodeJS(服务器):ReferenceError:当类型:模块时未定义要求

graphql中未定义类型的输出错误

“未捕获的类型错误:在 angularJS/NodeJS 中使用条带支付方法 Stripe.charges.create() 时无法读取未定义的属性‘创建’”

ES笔记—基础之数据类型篇