//api.js
const Koa = require('koa');
const router = require('koa-router')(); //路由
const bodyParser = require('koa-bodyparser'); //解析原始request请求
const fs = require('fs'); //文件读取
const cors = require('koa2-cors'); //设置cors头
const app = new Koa; /**
* 数据库连接
*/
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/admin', {'useNewUrlParser': true});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('数据库连接成功') /**
* Schema 用来定义存储在document 中的属性,并且赋予他们校验的规则,和默认值
*/
var kittySchema = new mongoose.Schema({
name: String
}); kittySchema.methods.speak = function () {
var greeting = this.name
? "Meow name is " + this.name
: "I don't have a name";
console.log(greeting);
} /**
* 定义模型
*/
var Kitten = mongoose.model('Kitten', kittySchema); /**
* 模型实例
*/
var silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'
silence.save(); //插库 var fluffy = new Kitten({ name: 'fluffy' });
fluffy.save(function (err, fluffy) {
if (err) return console.error(err);
fluffy.speak();
}); }); app.use(bodyParser()); app.use(cors({
origin: function (ctx) {
return '*';
}
})); let files = fs.readdirSync(__dirname + '/controllers');
let js_files = files.filter((f)=>{
return f.endsWith('.js');
}); for( let f of js_files ){
console.log(`process conteoller : ${f} ...`);
let mapping = require(__dirname + '/controllers/' + f ); for ( let url in mapping ){
if( url.startsWith('GET ')){
//如果url类似'GET xxx'
let path = url.substring(4);
router.get(path,mapping[url]);
}else if( url.startsWith('POST ') ){
//如果url类似'POST xxx'
let path = url.substring(5);
console.log('请求方式是:',path);
router.post(path,mapping[url]);
}
} } app.use(router.routes()); app.listen(8888);
console.log('app started at port 8888...');

最新文章

  1. 应用程序启动管理 Winform版
  2. ANdroid Studio查看debug SHA1
  3. 【Alpha阶段】第四次Scrum例会
  4. struct和union分析实例
  5. 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
  6. 【BZOJ】1603: [Usaco2008 Oct]打谷机(水题+dfs)
  7. shell脚本变量定义注意别跟系统变量重名了……
  8. IOS键盘样式风格有关设置
  9. mysql数据库中查询时间
  10. oracle core 概述
  11. Java解析和生成XML
  12. 播放器音乐源之天天动听API
  13. HDU 5972 Regular Number(ShiftAnd+读入优化)
  14. 让动态创建的ActiveX控件响应Windows消息
  15. 【Cocos得知】技术要点通常的积累
  16. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1
  17. Redis压缩列表
  18. 深入理解Java虚拟机阅读心得(二)
  19. Navicat远程连接不上mysql解决方案
  20. 211806385 黄存慧 https://www.cnblogs.com/huangch/ https://github.com/HuangCh327

热门文章

  1. for/in 语句用于循环对象属性
  2. 解决在宝塔面板IIS服务器上部署svg/woff/woff2字体的问题
  3. 通过 HDU 2048 来初步理解动态规划
  4. NEO4J入门基础第二章
  5. hdu 4283You Are the One
  6. 对词向量模型Word2Vec和GloVe的理解
  7. Object.assign() 方法浅析
  8. 无锡哲讯谈饲料加工行业ERP的功能
  9. ES6-Class类上
  10. CH32V307/CH32V203 IO翻转速度测试