lora-project/server-api/app.js

85 lines
2.2 KiB
JavaScript

const Koa = require('koa')
const path = require('path')
const mongoose = require('mongoose')
// Load config
const config = require('./config.json')
// custom modules
const mysql = require('./libs/mysql_pool')
// const so = require('./libs/storeObject')
const mem = require('./libs/memcache_lib')
// const sendmail = require('./libs/sendmail')
// init memcached connection
mem.host = config.memcache.host
mem.port = config.memcache.port
mem.connect()
// init mysql connection pool
mysql.database = config.db.mysql.dbname
mysql.host = config.db.mysql.host
mysql.user = config.db.mysql.user
mysql.password = config.db.mysql.pass
mysql.port = config.db.mysql.port
mysql.createPool()
// init mongodb connection
let mongoAuth = `${config.db.mongo.user.length > 0 && config.db.mongo.pass.length > 0 ? `${config.db.mongo.user}:${config.db.mongo.pass}@` : ''}`
let mongoUrl = `mongodb://${mongoAuth}${config.db.mongo.host}:${config.db.mongo.port}/${config.db.mongo.dbname}${mongoAuth.length > 0 ? '?authSource=admin' : ''}`
mongoose.connect(mongoUrl)
// Koa Middleware
const session = require('koa-session')
const Router = require('koa-router')
// const koaBody = require('koa-body')
const koaStatic = require('koa-static')
const cors = require('kcors')
const logger = require('koa-morgan')
// Koa Main Application
const app = new Koa()
const server = app.listen(config.port, () => {
console.log(`Server start on port ${server.address().port}`)
})
// Root Router
const router = new Router()
// set app keys
app.keys = ['44b4fa5cb8a394294361']
// enable logger
app.use(logger('dev'))
// enable body parser
// app.use(koaBody({
// multipart: true,
// // upload file size 10mb
// maxFieldSize: 10 * 1024 * 1024
// }));
// enable cors
app.use(cors())
// enable session
app.use(session({
key: 'koa:sess',
maxAge: 86400000,
overwrite: true,
httpOnly: true,
signed: true
}, app))
// enable static file
app.use(koaStatic(path.resolve(__dirname, 'public')))
// enable router
app.use(router.routes())
app.use(router.allowedMethods())
// load other route
const apiRoute = require('./route/api')
// set other route
router.use('/api', apiRoute.routes())
router.get('/', async(c, n) => {
c.body = 'Get root'
})