首页 > 解决方案 > 我的 post api 没有被执行,而我的 get api 工作正常。尝试使用邮递员触发 api,它继续发送请求

问题描述

我在 nodejs 中使用 exrepss 框架。服务器端代码:

这是我的服务器端代码:

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"});
                  })

          }
        })
      }); 

从 Postman 触发此 api 时,我将其作为 json 格式的正文传递。

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

遗漏信息:

我也在我的 app.js 中使用会话来..

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}
}
));

..我相信这与post api没有被调用有关。如果我删除此代码,我的 GET API 也不起作用。

我的 app.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);

...

标签: node.jsapiexpresspostman

解决方案


确保您正在解析请求正文。像这样的东西

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

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


推荐阅读