Javascript 请求闪存(错误)未显示-NodeJS 5.7.0
当用户输入一封已经在数据库中的电子邮件,让用户知道该帐户的电子邮件已经注册时,我正试图做到这一点。 我从mongo db获得了正确的错误,但我不想显示所有这些垃圾。我希望它只是在我的注册页面上的表单中显示我的错误,比如“此电子邮件地址已注册” MongoDB响应:Javascript 请求闪存(错误)未显示-NodeJS 5.7.0,javascript,node.js,ejs,Javascript,Node.js,Ejs,当用户输入一封已经在数据库中的电子邮件,让用户知道该帐户的电子邮件已经注册时,我正试图做到这一点。 我从mongo db获得了正确的错误,但我不想显示所有这些垃圾。我希望它只是在我的注册页面上的表单中显示我的错误,比如“此电子邮件地址已注册” MongoDB响应: MongoError: E11000 duplicate key error index: jcommerce.users.$email_1 dup key: { : "james12345@gmail.com" } at Fu
MongoError: E11000 duplicate key error index: jcommerce.users.$email_1 dup key: { : "james12345@gmail.com" }
at Function.MongoError.create (C:\jcommerce\node_modules\mongodb-core\lib\error.js:31:11)
at toError (C:\jcommerce\node_modules\mongodb\lib\utils.js:114:22)
at C:\jcommerce\node_modules\mongodb\lib\collection.js:616:23
at handleCallback (C:\jcommerce\node_modules\mongodb\lib\utils.js:96:12)
at C:\jcommerce\node_modules\mongodb\lib\bulk\unordered.js:470:9
at handleCallback (C:\jcommerce\node_modules\mongodb\lib\utils.js:96:12)
at resultHandler (C:\jcommerce\node_modules\mongodb\lib\bulk\unordered.js:417:5)
at commandCallback (C:\jcommerce\node_modules\mongodb-core\lib\topologies\server.js:936:9)
at Callbacks.emit (C:\jcommerce\node_modules\mongodb-core\lib\topologies\server.js:116:3)
at null.messageHandler (C:\jcommerce\node_modules\mongodb-core\lib\topologies\server.js:282:23)
at Socket.<anonymous> (C:\jcommerce\node_modules\mongodb-core\lib\connection\connection.js:273:22)
at emitOne (events.js:90:13)
at Socket.emit (events.js:182:7)
at readableAddChunk (_stream_readable.js:153:18)
at Socket.Readable.push (_stream_readable.js:111:10)
at TCP.onread (net.js:529:20)
EJS
错误源于此行:
user.email = req.body.email;
这是因为req.body.email
是未定义的
,这意味着该电子邮件不是唯一的。您应该验证对/signup
的请求是否与来自客户端的数据一起发送。我只需要检查一下
现有语言!==空的
if (existingUser !== null)
您是否正在使用
express flash
节点模块?或者其他一些flash库?我正在使用express flash node模块。req.flash('errors')
是否包含您认为应该包含在GET/signup端点中的内容?您能否在res.render('accounts/signup')
之前req.flash('errors')
?您是否在应用程序中使用body parser
模块?你能发布你的app.js
的代码吗?上传的server.js又称app.js,是的,我使用body parserI。我已经签入了邮递员,数据正在发送,问题只是显示错误。所以我认为这行代码很好,因为当我提交它并将数据发布到mongodb时,唯一的错误就是显示我自己的错误。非mongodb错误
var express = require('express');
var morgan = require('morgan');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var ejs = require('ejs');
var engine = require('ejs-mate');
var session = require('express-session');
var cookieParser = require('cookie-parser'); // parses cookies and put it on the request object in the middleware
var flash = require('express-flash');
var User = require('./models/user');
// App is reffering to express objects, bc we want to use express objects
var app = express();
mongoose.connect('mongodbconnectionstring', function (err) {
if (err) {
console.log(err);
}
else
{
console.log("Connected to the database");
}
});
//Middleware - logs requests in cmd
app.use(express.static(__dirname + '/public'));
app.use(morgan('dev'));
app.use(bodyParser.json()); // Express can parse data format
app.use(bodyParser.urlencoded({extended: true}));
app.use(cookieParser());
app.use(session({
resave: true,
saveUninitialized: true,
secret: "James@@@@#"
}));
app.use(flash());
app.engine('ejs', engine)
app.set('view engine', 'ejs');
// body parser takes the body of request and parses it -> Format encoded or raw data
var mainRoutes = require('./routes/main');
var userRoutes = require('./routes/user');
app.use(mainRoutes); // Express is using main routes
app.use(userRoutes);
// Listen on port number 3000 ,
app.listen(3000, function (err) {
if (err) {
throw err;
}
console.log("Server is Running on port 3000");
});
user.email = req.body.email;
if (existingUser !== null)