Я пытаюсь создать 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;
}
РЕДАКТИРОВАТЬ
Если у вас возникли проблемы с именем пользователя, проверьте наличие привязок к угловым данным. Я думаю, что у вас есть опечатка где-то вроде этого
<input ng-model="useranme">
Надеюсь это поможет.
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());
Поместите свой код выше всех routes
в файл основного сервера
----------
----------
var app=express();
app.use(bodyParser.urlencoded({
extended: true
}));
---------
---------