node.js - 我的 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);
...
解决方案
确保您正在解析请求正文。像这样的东西
const bodyParser = require("body-parser");
app.use(bodyParser.json());
router.post('/signup', function (req, res, next){
// access req.body here
});
推荐阅读
- sql - 使用 Case 语句决定要插入的列
- c# - 当字段值为空时,Razor View 引擎是否会操作下拉列表的选定项?
- python - 如何在字符串中的第 n 个特殊字符之前和之后删除/替换字符串?
- python - 使用标签将列传递给 imputer 的正确方法?
- php - Laravel Lumen Logging 无法用于生产
- javascript - 过滤函数不返回值
- angular - Angular - 注销用户时,除非刷新页面,否则他们无法重新登录
- php - 如何强制 NGINX 为 PHP 文件添加“Content-Length”标头
- azure-load-balancer - 无法将 VM 添加到标准 Azure 负载均衡器
- html - 使用左侧的 CSS 省略号截断字符串