【发布时间】:2020-05-19 06:49:33
【问题描述】:
我在 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);
...
【问题讨论】:
-
确保您的
req.body不为空或未定义。 -
你使用的是 mongodb 还是 mongoose?
-
日志中有
"here i am"文本吗?另外,我注意到.then (re.json)还需要一个字母,否则我想它会是未定义的。 -
@gujci 我已经更正了代码中的错字。但问题仍然存在。我也没有在日志中看到“我在这里”。
-
好的,所以整个函数都没有被调用。您能否发布将此路由器添加到中间件链的代码?
标签: node.js api express postman