egg与TypeORM的框架整合

本文档详细介绍了如何将Egg.js与TypeORM结合使用,搭建一个基于typescript的Node.js项目。从全局安装typescript、初始化Egg项目,到配置typeorm连接MySQL数据库,创建实体类及编写controller,一步步解析每个步骤。在遇到问题时,还给出了可能的错误解决方案。通过本教程,你可以快速掌握这两者结合的基础操作。
摘要由CSDN通过智能技术生成

前言

全局安装typescript

1.首先需要在全局安装typescript

npm install typescript -g

2.安装完成typescript后输入以下代码查看版本

$ tsc -v
Version 4.4.3

如出现版本就表示安装成功

安装egg

我们需要先全局安装egg,在初始化typescript项目。

npm init egg --type=ts

初始化创建好项目后,安装项目依赖

npm i

安装typeorm

npm install typeorm --save

简单安装这些我们就可以先试试能否成功启动项目,启动浏览器输入地址出现下图说明启动成功!
在这里插入图片描述

配置typeorm连接mysql文件

我们需要使用到一个插件:egg-ts-typeorm用于连接数据库

npm install -S egg-ts-typeorm

安装好插件,到config配置启用插件

// {app_root}/config/plugin.ts
const plugin: EggPlugin = {
  typeorm: {
    enable: true,
    package: 'egg-ts-typeorm',
  },
}

到根目录中配置ormconfig.yml,内容如下

default: # 默认连接 
  entitiesdir: "app/entities"

最后到config/config.default.ts中配置数据库连接信息

// {app_root}/config/config.default.ts
config.typeorm = {
  client: {
    type: 'mysql',
    host: 'localhost',
    port: 3306,
    username: 'test',
    password: 'test',
    database: 'test',
    synchronize: true,
    logging: false
  }
}

创建实体类

到app目录下创建entities目录
在entities目录下创建User.ts

import { Entity, PrimaryGeneratedColumn,Column } from "typeorm";

@Entity()
export default class User {
    @PrimaryGeneratedColumn({
        type: 'int',
        comment:'主键id'
    })
    id: number;

    @Column({
        type: 'varchar',
        length:50,
        comment:'账号'
    })
    account: string;
    @Column({
        type: 'varchar',
        length:50,
        comment: '密码'
    })
    password: string;
    
}

编写controller

在controller目录下创建user.ts编写

import { Controller } from "egg";
export default class UserController extends Controller {
    public async index(){
        const {ctx} = this;
        ctx.body = await ctx.repo.User.find();
    }
}

修改router.ts

import { Application } from 'egg';

export default (app: Application) => {
  const { controller, router } = app;

  router.get('/', controller.home.index);
  router.get('/user/list', controller.user.index);
};

好了,我们基本的已经写完了,接下来就看看能不能拿到数据了
在这里插入图片描述
报错: nodejs.TypeError: Cannot read property ‘find’ of undefined在这里插入图片描述
这个错误就是实体类不是export default 导致ctx.repo仓库中没有找到user才出现的报错

当然这个只是我的demo 也有比较完整的示例项目可以学习:点击跳转

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值