鞍山百度做网站,营销策略分析,怎么做网站信任,网站分为说明
上一篇: MVC实现之四这一篇主要介绍: 项目中用到的Sequelize库中的一些方法,参考使用Sequelize连接mysql将Model层加入Mar类中 Service层
还是从业务出发,Service层是调用方,调用方式和Controller层调用Service层一样
class Service {constructor(app) {const { model…说明
上一篇: MVC实现之四这一篇主要介绍: 项目中用到的Sequelize库中的一些方法,参考使用Sequelize连接mysql将Model层加入Mar类中 Service层
还是从业务出发,Service层是调用方,调用方式和Controller层调用Service层一样
class Service {constructor(app) {const { model } app;Service.prototype.model model;}async index() {const model Service.prototype.model;let data awati model.index();data.age 20;data.remarks forever 18;return data;}
}Mar类
设计原则是,在不同层之间传递参数,通过Mar类.故需要在Mar类中挂载Model改写Mar类如下
class Mar {constructor(conf) {this.$app new koa(conf);this.$router new koaRouter();this.model new Model(this); // 这一行是新加的this.service new Service(this);this.controller new Controller(this);this.router new Router(this);}listen(port){ /* 未改变 */}
}Model类 - 初始化
新建Mar类如下
class Mar {constructor ( app ) {console.log(Model ok);}test() {return Model for Service}async index() {return {name: marron}}
}此时启动服务器,访问http://localhost:3000 Model类-操作数据库
准备数据库,按照docker-compose.yml构建容器.浏览器打开管理页面 注: 密码是example新建数据库 marron 准备就绪后,连接数据库,并测试 连接数据库
Sequelize库提供的接口如下
const sequelize new Sequelize(marron, root, example, {host: localhost,dialect: mysql
})
sequelize.authenticate().then(() {console.log(Connect has been established successfully.);}).catch(err {console.error(Unable to connect to the database:, err);});写到Model类里面
进入Model类的时候,连接到数据库有一个testSQL方法用于测试,连接数据库是否成功
class Model {constructor(app) {this.connect();}connect(){this.sequelize new Sequelize(marron, root, example, {host: localhost,dialect: mysql})}testSQL() {this.sequelize.authenticate().then(() {console.log(Connect has been established successfully.);}).catch(err {console.error(Unable to connect to the database:, err);})}
}看到这句话时,说明数据库连接成功了 表模型
sequelize提供的接口如下
const User sequelize.define(user, {// 属性firstName: {type: Sequelize.STRING,allowNull: false},lastName: {type: Sequelize.STRING},{// 参数}
});加到Model层的addTableUser中
class Model{addTable {user: async () {const User this.sequelize.define(user, {// 属性name: {type: Sequelize.STRING,allowNull: false},date: {type: Sequelize.DATE,defaultValue: Sequelize.NOW}});// 同步到数据库User.sync({ force: true })}}
}然后在Model的构造函数中调用一次
class Mode {constructor(app) {this.addTable.user();}
}插入一条数据到表中
首先要有User表的结构暂时写在Model类的User方法中
class Model () {constructor(app) {}User() {return this.sequelize.define(user, {// 属性name: {type: Sequelize.STRING,allowNull: false},date: {type: Sequelize.DATE,defaultValue: Sequelize.NOW}})}
}写添加user的方法写在add属性下面
class Model () {add {user: async (person) {const User this.User();User.create(person);// 同步新增用户this.sequelize.sync();}}
}然后在constructor里面运行一次this.add.user({name:marron})
查询数据
class Model {find {user: async () {const User this.User();return await User.findAll();}}
}给Service提供服务
前面完成了连接数据库、创建表、往表内插入数据、查询数据的接口下面就是在Model中写一个index方法,给Service层中let data awati model.index(); 提供服务
class Model () {async index() {return await this.find.user();}
}总代码如下
const koa require(koa);
const koaRouter require(koa-router);class Mar {constructor(conf) {this.$app new koa(conf); // 相当于koa的实例this.$router new koaRouter(); // 相当于koa-router的实例this.model new Model(this);this.service new Service(this);this.controller new Controller(this);this.router new Router(this);}listen(port) {this.$app.listen(port, async () {console.log([mar]Server is running at http://localhost:${port});})}
}class Router {constructor(app) {const { controller, $router, $app } app;$router.get(/, controller.index);$app.use($router.routes());}
}
class Controller {constructor(app) {const { service } app;console.log(Controller:, service.test());Controller.prototype.service service;}test() {return Controller for Router}async index(ctx) {const service Controller.prototype.service;ctx.body await service.index();}
}
class Service {constructor(app) {const { model } app;Service.prototype.model model;}test() {return Service for Controller}async index() {const model Service.prototype.model;let data await model.index();data.age 20;data.remarks forever 18;return data;}
}const Sequelize require(sequelize);class Model {constructor(app) {this.connect();}// 给其他层的测试函数test() {return Model for Service}// 连接数据库的函数connect() {this.sequelize new Sequelize(marron, root, example, {host: localhost,dialect: mysql})}// 测试是否连接成功testSQL() {this.sequelize.authenticate().then(() {console.log(Connect has been established successfully.);}).catch(err {console.error(Unable to connect to the database:, err);});}async index() {return await this.find.user()}addTable {user: async () {const User this.sequelize.define(user, {// 属性name: {type: Sequelize.STRING,allowNull: false,},date: {type: Sequelize.DATE,defaultValue: Sequelize.NOW}});User.sync({ force: true })}}User() {return this.sequelize.define(user, {// 属性name: {type: Sequelize.STRING,allowNull: false,},date: {type: Sequelize.DATE,defaultValue: Sequelize.NOW}});}add {user: async (person) {const User this.User();User.create(person);// 同步新增用户this.sequelize.sync();}}find {user: async () {const User this.User();return await User.findAll();}}
}module.exports Mar;