【问题标题】:Node.js, Mongoose and Express 4.0 - Setting Modular Post RequestsNode.js、Mongoose 和 Express 4.0 - 设置模块化发布请求
【发布时间】:2014-07-29 05:15:29
【问题描述】:

我正在使用平均堆栈进行项目。 在设置客户端之前,我正在使用邮递员测试我的路线。

http://www.getpostman.com/

我正在尝试发送发布请求以获取特定用户和发布请求以添加用户。 这是代码......

//cons.js

 'use strict';

var strg = 'mongodb://localhost/users';

module.exports={
   strg:strg
}

//models.js

'use strict';

var mong = require('mongoose'), 
    str = require('./cons');
mong.connect(str.strg);

var pips = mong.model('pips',{
    name: {type: String, required: true, index: { unique: true }},
    pass: {type: String, required: true},
    act:{type: Boolean}
    });

module.exports = {
    pips: pips
}

//user_ctrl.js
var addPips, getPipsById,
    pip = require('./models').pips;

getPipsById = function(req, res){

        /*pip.findOne({jina:req.params.unam}).exec(
            function(err,rez){

            if(err||!rez){
            res.send(err);
        }
        res.json(rez);
    })*/

        pip.findOne({jina:req.body.unam}).exec(
            function(err,rez){

            if(err||!rez){
            res.send(err);
        }
        res.json(rez);
    })
};

addPips = function(req, res){

    pip.create({
        name: req.body.unam,
        pass: req.body.upas,
        act: false
        }, function(err, rez){
        if(err||!rez){
            res.send(err);
        }
        res.send("User account created...");
    })    
};

module.exports = {
    addPips: addPips,
    getPipsById : getPipsById
}

//routes.js

'use strict';

var jada = require('./user_ctrl');

module.exports = function(app){

    //app.get('/api/users/:unm',jada.getUserById);
    app.post('/api/users',jada.getPipsById);
    app.post('/api/users',jada.addPips);

    app.all('/api/*', function(req, res) {
        res.send(404);
    });
};


//server.js

'use strict';

var express = require('express'),
    morgan  = require('morgan'),
    port =process.env.PORT || 3000,
    bodyParser  = require('body-parser'),
    methodOverride = require('method-override'),
    app = express();


app.use(morgan('dev'));             
app.use(bodyParser());              
app.use(methodOverride());          
app.use(express.static(__dirname+"/app"));

require('./config/models');
require('./config/user_ctrl');
require('./config/routes')(app);

app.listen(port);   
console.log('Magic happens on port: '+port);

我正在使用发布请求来获取特定用户,因为我从表单而不是 url 中选择信息。 什么时候添加用户。我收到一条错误消息:“验证错误名称并需要通过”。我似乎看不出这是从哪里来的,因为我正在将表单中的值分配给参数。 谁能告诉我做错了什么?谢谢...

【问题讨论】:

  • 从您的代码看来,name 和 pass 是必填字段,并且 name 和 pass 都发生了验证错误。检查 req.body.unam 和 req.body.upas 是否具有某些值或未定义。您定义的另一件事是 String 并且您正在传递一个布尔值
  • 我已经更正了数据类型问题,谢谢。我用其他值测试了 req.body.unam 和 req.body.upas ,发现返回的是 undefined 。查看 server.js 的东西似乎设置正确,我需要 body-parser。有什么建议吗?

标签: javascript node.js rest express mongoose


【解决方案1】:

好吧,事实证明,Express Body-Parser 在未设置 content-type 时不知道如何处理数据。 我从这里发现: Express.js req.body undefined

在构建客户端之前,我使用邮递员来测试我的路线。在邮递员中,当我使用 x-www-form-urlencoded 模拟表单帖子时,它会自动设置内容类型。

如果您收到未定义的表单值,请尝试检查您的标题(内容类型)是否设置正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2020-11-01
    相关资源
    最近更新 更多