【发布时间】:2018-07-14 20:40:36
【问题描述】:
在站点中使用注册。对于注册表单,验证是使用猫鼬模型完成的,并尝试使用 Flash 在表单中显示错误消息。
但是结构在这个错误
TypeError: res.flash 不是函数 在 /home/work/first-node-app/firstnode/routes/index.js:35:11
我的代码 sn-ps 如下
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 mongoose = require('mongoose');
var passport = require('passport');
var session = require('express-session');
var flash = require('connect-flash');
var indexRouter = require('./routes/index');
var commonKeys = require('./config/config');
var app = express();
//connect mongoDb
mongoose.connect('mongodb://localhost:27017/db', { useNewUrlParser: true });
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// required for passport session
app.use(session({
secret: 'secrettexthere',
saveUninitialized: true,
resave: true,
// using store session on MongoDB using express-session + connect
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use('/', indexRouter);
module.exports = app;
索引.js
var express = require('express');
var router = express.Router();
var passport = require('passport');
var User = require('../models/user-model');
var Local = require('../config/passport-local');
router.get('/register', function(req, res){
res.render('public/register',{title:'Register'});
});
router.post('/register', function(req,res,next){
User.create({name:req.body.name, password:req.body.password, email : req.body.email}, function(err, user){
if (err) {
console.log('Error Inserting New Data');
if (err.name == 'ValidationError') {
for (field in err.errors) {
res.flash(field, err.errors[field].message);
}
res.render('public/register');
}
}
if(user) {
res.send('user registered');
}
})
});
module.exports = router;
任何人都可以指出此代码 sn-ps 中的错误,因为我是 Nodejs 的新手并正在尝试进行表单验证。 验证工作正常,控制台显示错误,但我无法使用 flash 传递该错误。任何人都可以帮助我吗? 如果您确认我编写 Nodejs 代码的方法是正确的,我们将不胜感激。
【问题讨论】:
-
你是否安装了所需的包
-
是的,我确实安装了
connect-flashflashreq-flash
标签: javascript node.js express npm