xxx-form-закодированный в application / json - PullRequest
1 голос
/ 14 марта 2019

Мои функции входа в бэкэнд принимают параметры в формате, закодированном в xxx-формате от POSTMAN. Я получаю сообщение об ошибке при изменении формата на application / json. Есть мысли о том, как получить request.body?

authenticate: function(req, res, next) {
        userModel.findOne({email:req.body.email}, function(err, userInfo){
                    if (err) {
                        next(err);
                    } else {
                        console.log(`The bcrypt value: ${bcrypt.compareSync(req.body.password, userInfo.password)}`)
                        if(userInfo != null && bcrypt.compareSync(req.body.password, userInfo.password)) {

                         const token = jwt.sign({id: userInfo._id}, req.app.get('secret'), { expiresIn: '1h' }); 

                         res.json({status:"success", message: "user found!!!", data:{user: userInfo, token:token}});    

                        }else{

                            res.json({status:"error", message: "Invalid email/password!!!", data:null});

                        }
                    }
                });
    }

1 Ответ

1 голос
/ 14 марта 2019

Я думаю, вам нужно добавить промежуточное ПО, которое анализирует ваше тело запроса в json.

Вы можете использовать body-parser для его получения.

если вы используете экспресс, вы можете сделать это, чтобы получить его:

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

app.use(bodyParser.json({}));//this line is required to tell your app to parse the body as json
app.use(bodyParser.urlencoded({ extended: false }));

Из документации по парсерам:

bodyParser.urlencoded ([параметры])

Возвращает промежуточное ПО, которое анализирует только тела с урлен-кодом и только внешний вид. в запросах, где заголовок Content-Type соответствует параметру type. Этот парсер принимает только UTF-8 кодировку тела и поддерживает автоматическая инфляция кодировок gzip и deflate.

Новый объект тела, содержащий проанализированные данные, заполняется на объект запроса после промежуточного программного обеспечения (т.е. req.body). Этот объект будет содержат пары ключ-значение, где значение может быть строкой или массивом (если для параметра extended установлено значение false) или любого типа (если для параметра extended установлено значение true).

Прочитайте документацию анализатора тела для деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...