javascript - 表达req.body为空。这是最好的方法吗?

标签 javascript angularjs node.js mongodb express

我是表达新手,并试图实现基本的登录功能,但我对传递数据有点困惑。我有几个地方似乎让我感到困惑。

  1. 我将输入值存储在发送到/login 的 $scope.formdata 对象中。有没有办法可以在我的 Express 后端访问这个对象。

  2. 我不太确定为什么 req.body 在这段代码中未定义。

    app.get('/success', function(req, res){
    //console.log(req.body);
    res.json(req.user);
    

    });

这里是 Express 后端和 Angular 代码,如下所示:

module.exports = function(app, passport){

//index page - main login page
app.get('/login', function(req, res){
    res.render('index.ejs');
});

app.post('/login', passport.authenticate('local-login', {
    successRedirect: '/success',
    failureRedirect: '/failure',
}));


app.get('/success', function(req, res){
    //console.log(req.body);
    res.json(req.user);
});

app.get('/failure', function(req, res){
    res.send('Failed');
});

};

    $scope.login = function(){
    $http.post('/login', $scope.formdata)
    .success(function (data){
        console.log(data);
    })
    .error(function (data){
        console.log(data);
    });
}

成功登录后,我只想重定向到新页面并显示“你好,用户名”

最佳答案

您应该使用主体解析中间件,否则您的 req.body 对象将是未定义

示例:

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

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(multer()); // for parsing multipart/form-data

app.post('/', function (req, res) {
  console.log(req.body);
  res.json(req.body);
})

文档:http://expressjs.com/api.html#req.body

关于javascript - 表达req.body为空。这是最好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32293898/

相关文章:

angularjs - 如何从路由器请求中获取值(value)?

javascript - 你如何创建一个命名的异步箭头函数?

node.js + socket.io + redis 架构 - 水平服务器缩放套接字连接?

node.js - 如何启动expressjs(nodejs)作为生产模式

javascript - 与backbonejs路由器有问题

javascript - jquery 使用 css 函数

javascript - Angular/ ionic - 模型不会更新 Controller 中的 $scope

Javascript 在一定时间后更改 div 内的图像

javascript - 如何在 JS 中使用 map() 函数内的 setInterval() 以 1 秒延迟对 API 调用进行排队

javascript - 如何为可以在控制台中检查的 Angular 服务创建变量?