Мой пост API не выполняется, где, как мой получить API работает нормально. Пытаясь запустить API с помощью почтальона, он продолжает отправлять запрос - PullRequest
0 голосов
/ 03 февраля 2020

Я использую инфраструктуру exrepss в nodejs. Код на стороне сервера:

Это мой код на стороне сервера:

router.post('/signup', function (req, res, next){
      console.log("here i am " + request.body)

      User.findOne({ $or: [{ 'local.email': req.body.email }] }, function(err, user) {
          if (err) {
               res.json(err);
          }
          if (user) {
              if (user.local.email == req.body.email) {
                 res.json({msg:"This email is already taken."})
              }


          } else {
              var userData = new User();          
              userData.local.email = req.body.email;
              userData.local.password = req.body.password;
              userData.save()
                  .then (res.json)              
                  .catch(err => {
                      console.log(err);
                      res.status(400).json({msg:"unable to save to database"});
                  })

          }
        })
      }); 

При запуске этого API от Postman я передаю его как тело в формате json.

{
    "email": "qweeeee",
    "password": "1233"
}

Пропущенная информация:

Я также использую сеанс в своем приложении. js to ..

app.use(session({
  resave : true , 
  saveUninitialized : true,
  secret : 'keyboard cat',
  store : new MongoStore({ mongooseConnection: mongoose.connection}), //starting a new session 
  cookie : {maxAge : 180 * 60 * 1000}
}
));

.. Я считаю, что это как-то связано с пост API не вызывается. Если я удаляю этот код, мои GET API также не работают.

мое приложение. js файл выглядит следующим образом.

...

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var bodyParser = require('body-parser');
var expressHbs = require('express-handlebars');
var csurf = require ('csurf');
var cors = require('cors');
var indexRouter = require('./routes/index');

var mongoose = require ('mongoose');
var session = require('express-session')
var passport = require('passport');
var flash = require('connect-flash');
var MongoStore= require('connect-mongo')(session);
const https = require('https');

require('./config/passport');

var app = express();

app.use(cors());
app.use(express.json());
app.use(bodyParser.json());
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css'));


mongoose.connect("mongodb://localhost:27017/shopping-cart", {
  useNewUrlParser: true
});
app.use(logger('dev'));

app.use(session({
  resave : true , 
  saveUninitialized : true,
  secret : 'keyboard cat',
  store : new MongoStore({ mongooseConnection: mongoose.connection}), //starting a new session 
  cookie : {maxAge : 180 * 60 * 1000}
}
)); 
app.use('/', indexRouter);

. ..

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

?‍? Вы можете использовать этот код ниже: ?

router.post('/signup', function (req, res, next){

  // make sure this is not undefined
  console.log(req.body);

  User.findOne({ $or: [{ 'local.email': req.body.email }] }).then(user => {  
    if(user) {
      return res.json({msg:"This email is already taken."});
    }
    var userData = new User(req.body);
    userData.save().then(result => {
      // make sure the 
      console.log(result);
      res.send(200).json(result);
    }).catch(err => {
        console.log(err);
        res.status(400).json({msg:"unable to save to database"});
    })
  }).catch(ex => {
    console.log(ex.message);
    res.status(500).send(ex);
  })
}); 

? Убедитесь, что ваш req.body не undefined

?‍? Если ваш req.body равен undefined, то вы можете использовать этот код ниже в вашем app.js или server.js.

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

Надеюсь, он вам поможет ?.

0 голосов
/ 03 февраля 2020

Убедитесь, что вы анализируете тело запроса. Как то так

const bodyParser = require("body-parser");
app.use(bodyParser.json());

router.post('/signup', function (req, res, next){
// access req.body here
});

...