mares-connector
v2.0.8
Published
mares framework connector
Downloads
4
Readme
mares-connector
mares framework 구동 모듈
Installation
npm install --save mares-connector
Example
//connector.js
const appRoot = require('app-root-path')
const settings = require('./')
const MaresConnector = require('mares-connector')
const maresMongoose = require('mares-mongoose')
const MaresWelder = require('mares-welder')
require('mares-mongoose-validator-extend') //단순로드
const maresExpressErrorHandler = require('mares-express-error-handler')
settings.global()
/**
* App 연결 Connector
*/
class Connector {
constructor() {
}
async start() {
try {
// mares-welder를 설정한다. (자세한 내용은 mares-welder문서를 참고한다.)
this.mares = new MaresWelder(rootPath)
this.mares.setMaresMongoose(maresMongoose)
this.mares.bindExpressErrorHandler(maresExpressErrorHandler())
// 설정된 mares를 아래와 같이 넣어준다.
this.connector = new MaresConnector(this.mares, settings)
await this.connector.startApp(appRoot.path)
return this.connector
} catch (e) {
console.error(e)
}
}
async stop() {
// stopApp() 함수를 통해서 데이터베이스를 포함한 모든 서버 커넥션을 종료시킬 수 있다.
await this.connector.stopApp()
}
}
module.exports = Connector
Settings
index.js로 아래의 값들을 노출시킨다.
config
설정값을 세팅해준다. 0. index.js
- common.js
- development.js
- production.js
- test.js
{
"mongoose": {
"force": true,
"url": "mongodb://localhost:27017/test?replicaSet=test"
}
}
mongoose를 연결하기 위해선 mongoose 설정값을 반드시 넣어준다.
global
global 변수를 정의해준다.
module.exports = () => {
global._ = require('lodash')
}
local
로컬라이제이션 스키마를 넣어준다.
let local = {
'defaultLocale': 'KR',
'defaultLanguage': 'ko',
'locales': {
'KR': {
'name': '대한민국',
'enName': 'Korea',
'code': '+82',
'timeGap': 9
}
},
'languages': {
'ko': {
'name': '한국어',
'enName': 'KOREAN',
'countries': ['KR']
}
}
}
module.exports = local
modules
연결해야 할 모듈이름을 배열로 적어준다.
module.exports = [
'infra-message'
]
mongoose or sequelize
데이터베이스 연결을 수행한다.
const mongoose = require('mongoose')
const meta = require('../infra-message/infra/meta')
const config = require('../settings/config').mongoose
require('./validator')
mongoose.set('useCreateIndex', true)
mongoose.plugin(require('mongoose-paranoid-plugin'), {field: 'delAt'})
mongoose.plugin(require('mongoose-beautiful-unique-validation'))
mongoose.plugin((schema, options = {}) => {
schema.post('validate', function (error, doc, next) {
Object.values(error.errors)
.filter(fieldError => fieldError.name === 'CastError')
.forEach(fieldError => {
fieldError.message = options.messageKey || 'error.common.cast'
})
next(error)
})
}, {
messageKey: meta.codes.invalidType
})
module.exports = (async () => {
return await mongoose.connect(config.url, {useNewUrlParser: true})
})