mares-connector
Version:
mares framework connector
144 lines (124 loc) • 3.2 kB
Markdown
//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
```
index.js로 아래의 값들을 노출시킨다.
설정값을 세팅해준다.
0. index.js
1. common.js
2. development.js
3. production.js
4. test.js
```json
{
"mongoose": {
"force": true,
"url": "mongodb://localhost:27017/test?replicaSet=test"
}
}
```
mongoose를 연결하기 위해선 mongoose 설정값을 반드시 넣어준다.
global 변수를 정의해준다.
```javascript
module.exports = () => {
global._ = require('lodash')
}
```
로컬라이제이션 스키마를 넣어준다.
```javascript
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
```
연결해야 할 모듈이름을 배열로 적어준다.
```javascript
module.exports = [
'infra-message'
]
```
데이터베이스 연결을 수행한다.
```javascript
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})
})
```
mares framework 구동 모듈
`npm install --save mares-connector`
```javascript