You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
test/server/server.js

95 lines
2.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);