const express = require('express'); const mongoose = require('mongoose'); const session = require('express-session'); const cookieParser = require('cookie-parser'); const mongoStore = require('connect-mongo')(session); const logger = require('morgan'); const multipart = require('connect-multiparty');//处理混合表单 const bodyParser = require('body-parser'); const app = express(); const Router = require('./config/Router'); const Admin = require('./models/Admin'); console.log(process.env.NODE_ENV); let port = process.env.PORT || 3001, env = process.env.NODE_ENV || 'development', allowDomain = `http://localhost:3000`; //数据库连接 let dbUrl = 'mongodb://localhost/campusCard'; mongoose.Promise = global.Promise; mongoose.connect(dbUrl, {useMongoClient: true}) .then(() => { console.log(`已连接${dbUrl}`); }).catch((e) => { console.log(e.stack); }); mongoose.connection.on('disconnected', function () { console.log('Mongoose connection disconnected'); }); //设置跨域访问 app.all('*', function (req, res, next) { res.header("Access-Control-Allow-Origin", allowDomain); res.header("Access-Control-Allow-Headers", "Content-Type,x-requested-with"); res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); res.header("X-Powered-By", ' 3.2.1'); res.header("Content-Type", "application/json;charset=utf-8"); res.header("Access-Control-Allow-Credentials", "true"); next(); }); //当extended为false的时候,键值对中的值就为'String'或'Array'形式,为true的时候,则可为任何数据类型。 app.use(bodyParser.urlencoded({extended: false})); app.use(bodyParser.json()); //session依赖于cookie app.use(cookieParser()); app.use(multipart()); app.use(session({ secret: 'campusCard', store: new mongoStore({ url: dbUrl, collection: 'sessions', }), resave: false, saveUninitialized: true })); if ('development' === env) { app.set('showStackError', true); app.use(logger(':method :url :status')); app.locals.pretty = true; mongoose.set('debug', true) } //*******************自动创建超级管理员********************** (async () => { try { let hasAdmin = await Admin.findOne({code: 'admin'}); if (hasAdmin) { console.log(`存在超级管理员${hasAdmin.code}`); } else { let admin = new Admin({ code: 'admin', password: 'admin', isAdmin: true }); let newAdmin = await admin.save(); console.log(`创建超级管理员成功${newAdmin}`); } } catch (e) { console.log(e.stack); } })(); //******************************************************** Router(app); app.listen(port);