首页 文章

bodyparser问题NodeJS express POST>“email undefined”

提问于
浏览
0

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

我在 Headers 信息中获取所有数据,包括电子邮件地址 . 但在身体 email is undefined??

节点服务器的控制台:

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

    尝试使用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;
    

    请阅读这篇文章关于 Understanding Scopes https://github.com/angular/angular.js/wiki/Understanding-Scopes#ngRepeat

    快乐的编码

  • 0

    我在“后端NodeJS快速服务器”中输错了

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

    一定是:

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

相关问题