Skip to content

Commit

Permalink
例子项目初始化,基本增删改查
Browse files Browse the repository at this point in the history
  • Loading branch information
li zhang committed Jan 9, 2019
1 parent b99b2cf commit 94acc15
Show file tree
Hide file tree
Showing 23 changed files with 250 additions and 85 deletions.
4 changes: 2 additions & 2 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const app = new require('koa')()
const app = new (require('koa'))()

app.use(require('koa-body')({multipart: true}))
app.use(require('koa2-cors')())
Expand All @@ -10,7 +10,7 @@ app.use(require('./src/middleware/paramHandler'))
app.use(require('./src/middleware/useridHandler'))
app.use(require('./src/router').routes()).use(require('./src/router').allowedMethods())

const config = require('./src/config/env')
const config = require('./config/env')
const server = app.listen(config.server.port)

require('./src/log/realtime').init(app.listen(config.server.log.port))
Expand Down
2 changes: 1 addition & 1 deletion src/config/dev.toml → config/dev.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ port = 3000
port = 4000 # 实时日志的端口

[db]
host = 'mongodb://localhost/projectname'
host = 'mongodb://localhost/bloodbrone-koa2'

[site.auth]
host = '' # todo 自行加入其它配置,如外接其它服务器
3 changes: 3 additions & 0 deletions config/env.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
process.env.NODE_ENV = 'dev'

module.exports = require('../src/util/readToml')(`/config/${process.env.NODE_ENV}.toml`)
File renamed without changes.
8 changes: 0 additions & 8 deletions src/config/env.js

This file was deleted.

41 changes: 41 additions & 0 deletions src/controller/bb/weaponController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const Router = require('koa-router')
const router = new Router()

const service = require('../../service/weaponService')
const valid = require('../../valid')

router.post('/bb/weapon', async(ctx, next) => {
let e = {
name: ctx.params.name,
phy: ctx.params.phy || 0,
bld: ctx.params.bld || 0,
}
valid.string('weapon.name', e.name).is().lengthIn(1, 20)
valid.number('weapon.phy', e.phy).is().in(500)
valid.number('weapon.bld', e.bld).is().in(500)
e = await service.save(e)
ctx.ok(e._id)
})

router.delete('/bb/weapon/:_id', async(ctx, next) => {
let e = {
_id: ctx.params._id,
}
await service.delete(e)
ctx.ok()
})

router.put('/bb/weapon/:_id', async(ctx, next) => {
let e = {
_id: ctx.params._id,
name: ctx.params.name,
phy: ctx.params.phy,
bld: ctx.params.bld,
}
if (e.name) valid.string('weapon.name', e.name).is().lengthIn(1, 20)
if (e.phy) valid.number('weapon.phy', e.phy).is().in(500)
if (e.bld) valid.number('weapon.bld', e.bld).is().in(500)
await service.update(e)
ctx.ok()
})
module.exports = router
30 changes: 30 additions & 0 deletions src/controller/everyone/weaponController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const Router = require('koa-router')
const router = new Router()

const service = require('../../service/weaponService')

router.get('/weapon/:_id', async(ctx, next) => {
let e = {
_id: ctx.params._id
}
let weapon = await service.findById(e)
ctx.ok(weapon)
})
router.get('/weapon/count', async(ctx, next) => {
let filter = {
name: ctx.params.name || '',
}
let count = await service.count(filter)
ctx.ok(count)
})
router.get('/weapon', async(ctx, next) => {
let filter = {
name: ctx.params.name || '',
start: parseInt(ctx.params.start) || 0,
limit: parseInt(ctx.params.limit) || 10
}
let list = await service.find(filter)
ctx.ok(list)
})

module.exports = router
36 changes: 0 additions & 36 deletions src/controller/xController.js

This file was deleted.

9 changes: 9 additions & 0 deletions src/db/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const config = require('../../config/env')
const mongoose = require('mongoose')

module.exports = {
drop: async () => {
await mongoose.connect(config.db.host, {useNewUrlParser: true})
mongoose.connection.db.dropDatabase()
}
}
2 changes: 1 addition & 1 deletion src/error/createRestAndLog.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const log = require('../log')
module.exports = async (err) => {
module.exports = (err) => {
let result = {}
switch (err.name) {
case 'PARAM':
Expand Down
10 changes: 5 additions & 5 deletions src/log/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,23 @@ log4js.configure({

module.exports = {
c: (name, v) => {
log4js.getLogger(name).debug(format(v))
log4js.getLogger(JSON.stringify(name)).debug(format(v))
realtime.send(name, v)
},
d: (name, v) => {
log4js.getLogger(name).debug(format(v))
log4js.getLogger(JSON.stringify(name)).debug(format(v))
realtime.send(name, v)
},
i: (name, v) => {
log4js.getLogger(name).info(format(v))
log4js.getLogger(JSON.stringify(name)).info(format(v))
realtime.send(name, v)
},
w: (name, v) => {
log4js.getLogger(name).warn(format(v))
log4js.getLogger(JSON.stringify(name)).warn(format(v))
realtime.send(name, v)
},
e: (name, v) => {
log4js.getLogger(name).error(format(v))
log4js.getLogger(JSON.stringify(name)).error(format(v))
realtime.send(name, v)
},
}
Expand Down
4 changes: 2 additions & 2 deletions src/middleware/errorHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ const createRestAndLog = require('../error/createRestAndLog')
module.exports = async (ctx, next) => {
try {
await next()
} catch(err) {
let rest = createRestAndLog(err)
} catch(err) {
let rest = createRestAndLog(err)
ctx.body = rest
}
}
4 changes: 4 additions & 0 deletions src/model/weapon.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
const mongoose = require('mongoose')
const model = mongoose.model('weapon', {name: String, phy: Number, bld: Number})
model.null = {isNull: true}
module.exports = model
4 changes: 0 additions & 4 deletions src/model/xxx.js

This file was deleted.

7 changes: 5 additions & 2 deletions src/router/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
const Router = require('koa-router')
const router = new Router()

const xController = require('./controller/xController')
router.use('', xController.routes(), xController.allowedMethods())
const bbWeaponController = require('../controller/bb/weaponController')
router.use('', bbWeaponController.routes(), bbWeaponController.allowedMethods())

const weaponController = require('../controller/everyone/weaponController')
router.use('', weaponController.routes(), weaponController.allowedMethods())

module.exports = router
32 changes: 32 additions & 0 deletions src/service/weaponService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const model = require('../model/weapon')
const failError = require('../error/failError')

module.exports = {
save: async(e) => {
let exists = await model.findOne({name: e.name}, '-__v')
if (exists) {
throw new failError('data exists')
}
e = new model(e)
await e.save()
return e
},
delete: async(e) => {
await model.deleteOne({_id: new model(e).id})
},
update: async(e) => {
let exists = await model.findOne({_id: e._id}, '-__v')
let next = new model({...exists, ...e})
await next.updateOne(next)
},
findById: async(e) => {
return await model.findOne({_id: e._id}, '-__v') || model.null
},
count: async(filter) => {
return await model.countDocuments({name: {$regex: `${filter.name}.*`}})
},
find: async(filter) => {
let result = await model.find({name: {$regex: `${filter.name}.*`}}, '-__v').skip(filter.start).limit(filter.limit).sort('name')
return result
}
}
23 changes: 0 additions & 23 deletions src/service/xService.js

This file was deleted.

10 changes: 10 additions & 0 deletions src/util/readToml.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

module.exports = (pathFromProjectRoot) => {
let result = require('toml').parse(
require('fs').readFileSync(
require('path').join(__dirname, '../../', pathFromProjectRoot),
'utf-8'
)
)
return result
}
2 changes: 1 addition & 1 deletion src/valid/validString.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class validString {
return this
}
mongoId() {
if (this.v.length < 15 || this.v.length > 30) throw new paramError(`${this.name}: ${this.v}, must be mongodb id`)
if ((this.v.length === 24 || this.v.length === 12) && isNaN(parseInt(this.v,16))!== true) throw new paramError(`${this.name}: ${this.v}, must be mongodb id`)
return this
}
of(list) {
Expand Down
7 changes: 7 additions & 0 deletions tests/data/operator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const weaponOperator = require('./weapon/operator')

module.exports = {
saveWeapon: () => {
weaponOperator.save()
}
}
8 changes: 8 additions & 0 deletions tests/data/weapon/data.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[[list]]
name = 'Chikage'
phy = 92
bld = 92
[[list]]
name = 'Rakuyo'
phy = 82
bld = 0
15 changes: 15 additions & 0 deletions tests/data/weapon/operator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const model = require('../../../src/model/weapon')

module.exports = {
save: () => {
let data = require('toml').parse(
require('fs').readFileSync(
require('path').join(__dirname, './data.toml'),
'utf-8'
)
)
data.list.forEach(async e => {
await new model(e).save()
})
}
}
Loading

0 comments on commit 94acc15

Please sign in to comment.