node.js - router.getAll未定义的不是一个函数?
怪我咯
怪我咯 2017-04-17 13:14:30
0
0
319

app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var multer = require('multer');

var routes = require('./routes/index');
var settings = require('./settings');
var flash = require('connect-flash');
var users = require('./routes/users');

var app = express();//生成一个express实例 app

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
app.use(flash());
app.engine('.html', require('ejs').__express);

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
resave: false,
saveUninitialized: true,
secret: settings.cookieSecret,
key: settings.db,//cookie name
cookie: {maxAge: 100060602430},//30 days
store: new MongoStore({

url: 'mongodb://localhost/blog',
db: settings.db,
host: settings.host,
port: settings.port

})
}));
app.use(multer({
dest: './public/images',
rename: function (fieldname, filename) {

return filename;

}
}));

app.use('/', routes);//加载路由
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {

res.status(err.status || 500);
res.render('error', {
  message: err.message,
  error: err
});

});
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {

message: err.message,
error: {}

});
});

module.exports = app;//导出app实例供其他模块调用

index.js
var crypto = require('crypto'),

   User = require('../models/user.js');
   Post = require('../models/post.js');

var express = require('express');
var router = express.Router();

/ GET index page. /
router.getAll('/', function (req, res) {

Post.get(null, function (err, posts) {
  if (err) {
    posts = [];
  }
  res.render('index', { 
  title: '主页',
  user: req.session.user,
  posts: posts,
  success: req.flash('success').toString(),
  error: req.flash('error').toString()
});

});
});

router.get('/reg', checkNotLogin);
router.get('/reg', function (req, res) {
res.render('reg', {

title: '注册',
user: req.session.user,
success: req.flash('success').toString(),
error: req.flash('error').toString()

});
});

router.post('/reg', checkNotLogin);
router.post('/reg', function (req, res) {

var name = req.body.name,
           password = req.body.password,
           password_re = req.body['password-repeat'];
    if (password_re != password) {
        req.flash('error', '两次输入的密码不一致!');
        return res.redirect('/reg');
    }
    var md5 = crypto.createHash('md5'),
           password = md5.update(req.body.password).digest('hex');
    var newUser = new User({
           name: name,
           password: password,
           email: req.body.email
    });
    User.get(newUser.name, function (err, user) {
        if (err) {
            req.flash('error', err);
            return res.redirect('/');
        }
        if (user) {
            req.flash('error', '用户已存在!');
            return res.redirect('/reg');
        }
            newUser.save(function (err, user) {
                if (err) {
                    req.flash('error', err);
                    return res.redirect('/reg');
                }
                req.session.user = user;
                req.flash('success', '注册成功!');
                res.redirect('/');
            });
        });
    });

router.get('/login', checkNotLogin);
router.get('/login', function (req, res) {
res.render('login', {

     title: '登录',
      user: req.session.user,
      success: req.flash('success').toString(),
      error: req.flash('error').toString()});

});

router.post('/login', checkNotLogin);
router.post('/login', function (req, res) {
var md5 = crypto.createHash('md5'),

      password = md5.update(req.body.password).digest('hex');
User.get(req.body.name, function (err, user) {
  if (!user) {
    req.flash('error', '用户不存在!');
    return res.redirect('/login');
  }
  if (user.password != password) {
    req.flash('error', '密码错误!');
    return res.redirect('/login');
  }
  req.session.user = user;
  req.flash('success', '登录成功!');
  res.redirect('/')
});

});

router.get('/post', checkLogin);
router.get('/post', function (req, res) {
res.render('post', {

title: '发表',
 user: req.session.user,
 success: req.flash('success').toString(),
  error: req.flash('error').toString()
});

});

router.post('/post', checkLogin);
router.post('/post', function (req, res) {

var currentUser = req.session.user,
       post = new Post(currentUser.name, req.body.title, req.body.post);
post.save(function (err) {
  if (err) {
    req.flash('error', err);
    return res.redirect('/');
  } 
  req.flash('success', '发布成功!');
  res.redirect('/');
});

});

router.get('/logout', checkLogin);
router.get('/logout', function (req, res) {
req.session.user = null;
req.flash('success', '退出成功!');
res.redirect('/');
});

router.get('/upload', checkLogin);
router.get('/upload', function (req, res) {
res.render('upload', {

title: '文件上传',
user: req.session.user,
success: req.flash('success').toString(),
error: req.flash('error').toString()

});
});

router.post('/upload', checkLogin);
router.post('/upload', function (req, res) {
req.flash('success', '文件上传成功!');
res.redirect('/upload');
})

router.get('/u/:name', function (req, res) {
User.get(req.params.name, function (err, user) {

if (!user) {
  req.flash('error', '用户不存在!');
  return res.redirect('/');
}
Post.getAll(user.name, function (err, posts) {
  if (err) {
    req.flash('error', err);
    return res.redirect('/');
  }
  res.render('user', {
    title: user.name,
    posts: posts,
    user: req.session.user,
    success: req.flash('success').toString(),
    error: req.flash('error').toString()
  });
});

});
});

function checkLogin(req, res, next) {
if (!req.session.user) {

req.flash('error', '未登录!');
res.redirect('/login');

}
next();
}

function checkNotLogin(req, res, next) {
if (req.session.user) {

req.flash('error', '已登录!');
res.redirect('back');

}
next();
}

module.exports = router;

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(0)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!