### 1. 路由注册
- **动态导入控制器**:通过 `getControllers` 函数获取所有控制器文件路径。
- **自动注册路由**:`regControllers` 函数遍历控制器文件,根据方法和 URL 注册路由。
### 2. 数据库配置
- **Sequelize 初始化**:使用 SQLite 作为数据库,定义 `sequelize` 实例。
- **同步数据库**:`sync` 函数用于初始化数据库并插入初始数据。
```js
// db/index.js
export let sequelize = new Sequelize({
dialect: 'sqlite',
storage: './db.db'
});
export const sync = async () => {
await sequelize.sync({ force: true });
let { Blog } = await import('../model/Blog.js');
let blogs = [/* 初始博客数据 */];
Blog.bulkCreate(blogs);
}
```
### 3. 数据模型
- **定义 Blog 模型**:对应数据库中的 blogs 表,包含 title 和 author 字段。
```js
// model/Blog.js
export const Blog = sequelize.define('blogs', {
title: {
type: DataTypes.STRING,
allowNull: false
},
author: DataTypes.STRING
});
```
### 4. 控制器逻辑
- **定义控制器函数**:每个函数对应一个路由操作,处理请求并返回响应。
```js
// controllers/blogController.js
let fn_list = async (ctx, next) => { ctx.body = '列表'; }
export default [
{ method: 'get', url: '/blogs', fn: fn_list },
{ method: 'get', url: '/blogs/:id', fn: fn_getById }
];
```