bodyparser问题NodeJS表示POST>"电子邮件undefined"

时间:2015-02-15 19:57:47

标签: node.js post express

我正在尝试将一些用户信息存储在MongoDB数据库中。 从localhost:9000上的前端(AngularJS)开始向后端发送POST(在localhost:3000上表示)

我在标题信息中获取所有数据,包括电子邮件地址。 但在体内电子邮件未定义?

来自节点服务器的

控制台:

enter image description here

来自Web浏览器的

控制台:

enter image description here

我必须对身体解析器做错了吗?

前端: 注册查看:

<form ng-submit="submit()" name="register" class="form-signin" novalidate>
    <h1 class="form-signin-heading text-muted">Register</h1>
    <input name="email" ng-model="email" type="email" class="form-control" placeholder="Email address" required autofocus="" required>
        <p class="help-block" ng-show="register.email.$dirty && register.email.$invalid">Please enter a proper email.</p>
    <input name="password" ng-model="password" type="password" class="form-control" placeholder="Password" required>
    <input name="password_confirm" ng-model="password_confirm" type="password" class="form-control" placeholder="Confirm Password" validate-equals='password' required>

    <p class="help-block" ng-show="register.password_confirm.$dirty && register.password_confirm.$invalid">please match the password.</p>

    <button ng-disabled="register.$invalid" class="btn btn-lg btn-primary btn-block" type="submit">
        Submit
    </button>
</form>

前端控制器:

'use strict';

angular.module('app')
  .controller('RegisterCtrl', function ($scope, $http, alert) {
    $scope.submit = function() {

        var url = 'http://localhost:3000/register';
        var user = {
            email: $scope.email,
            password: $scope.password
        };


        $http.post(url, user)
            .success(function(res){
                alert('success', 'OK!', 'You are now registered');
            }) 
            .error(function(err) {
                alert('warning', 'Opps!', 'Could not register');
            });
    }
  });

后端NodeJS快速服务器。

var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

var app = express();


app.use(bodyParser.json());      

//Verbind front-end met backend
app.use(function(req, res, next){
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');

    next();
})

//MongoDB userModel
var User = mongoose.model('User', {
    email: String,
    password: String
});

//Reactie op de FRONT END POST voor REGISTRATIE
app.post('/register', function(req, res){
    //emailVerification.s end(req.user.email);
    //createSendToken(req.user, res);
    var user = req.body;
    console.log('req.body**' + req.body);
    console.log('req.headers**' +req.headers);

    var newUser = new User({
        email: user.name,
        password: user.password
    })

    newUser.save(function(err) {
        //als goed opgeslagen > send status 200 en json new user
        res.status(200).json(newUser);  
        console.log(newUser);
    });


});


//MONGODB CONNECTIE =====================================
mongoose.connect('mongodb://....');
//MONGODB CONNECTIE =====================================

var server = app.listen(3000, function(){
    console.log('api listening on ', server.address().port);
})

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试使用Dot运算符,如下所示更改模板,(示例代码)

    <form class="list" name="loginForm" ng-submit="login(credentials)" novalidate>
        <label class="item item-input item-floating-label" for="username">
            <span class="input-label">UserName</span>
            <input type="text" placeholder="Username" id="username" ng-model="credentials.username">
        </label>

        <label class="item item-input item-floating-label" for="password">
            <span class="input-label">Password</span>
            <input type="password" placeholder="password" id="password" ng-model="credentials.password">
        </label>

        <button class="button button-block button-dark activated" type="submit">Logga in</button>
    </form>

在你的控制器中,

您获得的用户名为

var user = $scope.username;

请阅读有关了解范围的文章 https://github.com/angular/angular.js/wiki/Understanding-Scopes#ngRepeat

快乐编码

答案 1 :(得分:0)

我在“后端NodeJS快速服务器”

中输错了
var newUser = new User({
        email: **user.name,**
        password: user.password
    })

必须是:

var newUser = new User({
        email: **user.email,**
        password: user.password
    })