Node.js API - 与Postman一起使用但在Angular.js中不起作用

时间:2016-09-11 08:22:00

标签: angularjs node.js mongodb

我正在尝试创建一个mean应用程序。作为示例,如果我通过postmanmlab创建的数据发布请求。

如果我使用$http方式发布相同内容,则无法将错误视为:

{
  "message": "Family validation failed",
  "name": "ValidationError",
  "errors": {
    "username": {
      "message": "Path `username` is required.",
      "name": "ValidatorError",
      "properties": {
        "type": "required",
        "message": "Path `{PATH}` is required.",
        "path": "username"
      },
      "kind": "required",
      "path": "username"
    },
    "password": {
      "message": "Path `password` is required.",
      "name": "ValidatorError",
      "properties": {
        "type": "required",
        "message": "Path `{PATH}` is required.",
        "path": "password"
      },
      "kind": "required",
      "path": "password"
    }
  }
}

和mongoose的节点:

.post(function( req, res ){

                var family = new Family();

                family.username = req.body.username,
                family.password = req.body.password,
                family.familyLeader = req.body.familyLeader,
                family.husband = req.body.husband,
                family.wife = req.body.wife,
                family.kids = req.body.kids;

                family.save(function( err, newFamily ) {

                    if( err ) {

                        if ( err.code == 11000) {
                            return res.json({ success: false, message: 'A user with that username already exists. '});
                        }
                        else {
                            return res.send( err );
                        }

                    }

                    res.json({ message: 'Family created!', newFamily: newFamily });

                });



            })

这是我的角度代码:

vm.createNewFamily = function() {

            $http({
                method  : 'POST',
                url     : '/api/family',
                data    : vm.form,
                headers : {'Content-Type': 'application/x-www-form-urlencoded'}
            }).success( function ( data ) {

                console.log('retured!', data );

            })

        }

我的完整api.js(节点)

var Family = require('../models/model_family');

module.exports = function( app, express ) {

    var apiRoute = express.Router();

    apiRoute.use(function( req, res, next ) {

        console.log( 'some one using the app!' );
        next();

    })

    apiRoute.get('/', function( req, res ) {

        res.json({"namea" : "Arif"})

    });


    apiRoute.route('/family')

            .get(function( req, res ){

                res.send('family get processing');

            })

            .post(function( req, res ){

                var family = new Family();

                family.username = req.body.username,
                family.password = req.body.password,
                family.familyLeader = req.body.familyLeader,
                family.husband = req.body.husband,
                family.wife = req.body.wife,
                family.kids = req.body.kids;

                family.save(function( err, newFamily ) {

                    if( err ) {

                        if ( err.code == 11000) {
                            return res.json({ success: false, message: 'A user with that username already exists. '});
                        }
                        else {
                            return res.send( err );
                        }

                    }

                    res.json({ message: 'Family created!', newFamily: newFamily });

                });



            })


    return apiRoute;

}

2 个答案:

答案 0 :(得分:1)

修改

如果您只对用户名有疑问,请检查角度数据绑定。我觉得你有这样的错字

<input ng-model="useranme">

希望这有帮助。

答案 1 :(得分:0)

将此代码置于主服务器文件

中的所有routes之上
 ----------
  ----------
        var app=express();
        app.use(bodyParser.urlencoded({
          extended: true
        }));

  ---------
  ---------