Node.js API - работает с почтальоном, но не работает в Angular.js

0

Я пытаюсь создать mean приложение. в качестве образца, если я mlab запрос через postman данные, созданные в mlab.

в случае, если я отправляю то же самое с помощью метода $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"
    }
  }
}

и узел с мангустом:

.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;

}
  • 0
    Вы уверены, что в нашем объекте req.body есть все данные? Из того, что я вижу, ваша схема мангуста посылает ошибку проверки ... А какое промежуточное программное обеспечение вы используете на стороне узла?
  • 0
    Можете ли вы опубликовать основной файл вашего сервера?
Показать ещё 1 комментарий

2 ответа

1
Лучший ответ

РЕДАКТИРОВАТЬ

Если у вас возникли проблемы с именем пользователя, проверьте наличие привязок к угловым данным. Я думаю, что у вас есть опечатка где-то вроде этого

<input ng-model="useranme">

Надеюсь это поможет.

  • 0
    вот мой server.js, потому что я уже использую body-parser : var express = require('express'), router = express.Router(), config = require('./server.config'), apiRoutes = require('./app/routes/api'), bodyParser = require('body-parser'), // get body-parser morgan = require('morgan'), // used to see requests mongoose = require('mongoose'), path = require('path'), //sets path from where node runs app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json());
  • 0
    Хорошо .. Включен ли body-parser перед всеми маршрутами?
Показать ещё 7 комментариев
0

Поместите свой код выше всех routes в файл основного сервера

 ----------
  ----------
        var app=express();
        app.use(bodyParser.urlencoded({
          extended: true
        }));

  ---------
  ---------
  • 0
    уже я включил это.
  • 0
    поместите эту строку после `var app = express (); `
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню