typescript egg mysql_egg.js typescript 开发采坑记录

本文记录了使用Egg.js、TypeScript和MySQL进行后端开发时遇到的问题及解决方案,包括如何处理`egg-mysql`无类型定义、自定义`BaseModel`、配置`sequelize`以及迁移过程中碰到的错误。作者强调了在`migration`中手动复制模型信息、配置文件的特殊处理和字符集设置等关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常年使用sails 开发node 后端 苦不堪言,文档缺失,迭代较慢,并且周边也不是那么完善,虽说基本能满足需求 但是还是少了灵活性。 待到egg 推出之时就在观察,最近新开项目遂采用egg - ts

egg-mysql

这玩意没有index.d.ts .所以 你想使用app.mysql 是编译不过的,所以要用 ts 的merge 来给Application上挂载一个mysql 我们可以这么做

./typings/index.d.ts 写入

declare module 'egg' {

interface mysql {

get(tableName: String, find: {}): Promise

query(sql: String, values: Any[]): Promise

}

interface Application {

mysql: mysql;

}

}

可以在上面给mysql 加点方法这样就有提示了。

egg-sequelize

为node中较为常用的orm 框架。

这个玩意我们可以细说。

首先你要做一个model 来定义这个表中的字段,但是为了方便开发,我们得加点料。

/app/model/model.ts 这里写一个基类的basemodel 这样以后所有的model都可以用到基类

import { Application } from 'egg';

import { snakeCase } from 'lodash';

import * as moment from 'moment';

import { DefineAttributes, SequelizeStatic } from 'sequelize';

export default function BaseModel(

app: Application,

table: string,

attributes: DefineAttributes,

options: object = {},

) {

const { Op, UUID, UUIDV4 } = app.Sequelize;

const modelSchema = app.model.define(table, {

id: {

type: UUID,

unique: true,

primaryKey: true,

allowNull: false,

defaultValue: UUIDV4,

},

...attributes,

...getDefaultAttributes(optio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值