资讯专栏INFORMATION COLUMN

造轮子 - EGGJS的MySQL操作库

Alex / 1821人阅读

摘要:最近学习,学习过程中使用官方推荐的库,感觉官方库不太好用,基础的没问题。介绍这个轮子其实是很早以前就造好的,主要参考的数据库操作方式。将设置表名设置查询字段联表等操作进行链式操作,给人一种语义化操作数据库的感觉。

最近学习eggjs,学习过程中使用官方推荐的MySQL库,感觉官方库不太好用,基础的CURD没问题。但是复杂点的操作就不行了,虽然官方还有一个egg-sequelize,但是这个这并不妨碍我造轮子。下面介绍一下我的这个轮子。

介绍

这个轮子其实是很早以前就造好的,主要参考THINKPHP的数据库操作方式。将设置表名(table)、设置查询字段(field)、联表(join)等操作进行链式操作,给人一种语义化操作数据库的感觉。

比如从用户表查找id为1的用户的名字,则只需要这样操作:

mysql.table("user").field("name").where({ id: 1 }).find();
// SELECT name FROM user where id=1 limit 1

是不是很简单呢?

造的轮子名字叫@hyoga/egg-mysql,所以只需要:

安装
npm i @hyoga/egg-mysql --save
配置
// {app_root}/config/config.default.js
exports.mysql = {
  mysql: {
    client: {
      host: "127.0.0.1",
      port: "3306",
      user: "root",
      password: "",
      database: "db",
    },
    // 是否加载到 app 上,默认开启
    app: true,
    // 是否加载到 agent 上,默认关闭
    agent: false,
  },
};
使用
// {app_root}/config/plugin.js
exports.mysql = {
  enable: true,
  package: "@hyoga/egg-mysql",
};

// {app_root}/app/service/user.js
export default class User extends Service {
  private table = "user";

  public async list() {
    // sql = SELECT * FROM user WHERE status = 1
    return this.app.mysql.table(this.table).where({ status: 1 }).select();
  }
} 

这时候mysql就挂载到egg的app对象了,接下来就可以到处链式操作了。

推广

@hyoga/egg-mysql依赖于@hyoga/mysql,项目地址如下,欢迎star,欢迎issue:

hyoga-egg-mysql

hyoga-mysql

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109537.html

相关文章

  • 轮子 - EGGJSMySQL操作

    摘要:最近学习,学习过程中使用官方推荐的库,感觉官方库不太好用,基础的没问题。介绍这个轮子其实是很早以前就造好的,主要参考的数据库操作方式。将设置表名设置查询字段联表等操作进行链式操作,给人一种语义化操作数据库的感觉。 最近学习eggjs,学习过程中使用官方推荐的MySQL库,感觉官方库不太好用,基础的CURD没问题。但是复杂点的操作就不行了,虽然官方还有一个egg-sequelize,但是...

    jsliang 评论0 收藏0
  • React轮子:拖拽排序组件「Dragact」

    摘要:造轮子的一些思考首先,我们的需求是用户能够方便的调整后台的各种表盘位置。内的所有组件必须不能重叠,还要能自动排序某些组件要可以设定静态的,也就是固定在那里,不被布局的任何变动而影响。为了快速获得这种心态的转变,你要做的就是造轮子。 先来一张图看看: showImg(https://segmentfault.com/img/remote/1460000013305417?w=600&h=...

    Charlie_Jade 评论0 收藏0
  • React轮子:拖拽排序组件「Dragact」

    摘要:造轮子的一些思考首先,我们的需求是用户能够方便的调整后台的各种表盘位置。内的所有组件必须不能重叠,还要能自动排序某些组件要可以设定静态的,也就是固定在那里,不被布局的任何变动而影响。为了快速获得这种心态的转变,你要做的就是造轮子。 先来一张图看看: showImg(https://segmentfault.com/img/remote/1460000013305417?w=600&h=...

    yangrd 评论0 收藏0
  • React轮子:拖拽排序组件「Dragact」

    摘要:造轮子的一些思考首先,我们的需求是用户能够方便的调整后台的各种表盘位置。内的所有组件必须不能重叠,还要能自动排序某些组件要可以设定静态的,也就是固定在那里,不被布局的任何变动而影响。为了快速获得这种心态的转变,你要做的就是造轮子。 先来一张图看看: showImg(https://segmentfault.com/img/remote/1460000013305417?w=600&h=...

    tracymac7 评论0 收藏0
  • Eggjs小试

    摘要:项目都很小,但为了进一步了解,特意选择了作为框架基础开发后端服务。能将请求限制在同源网站,即只有拥有专有令牌的网站发送请求才会正确响应。项目生产静默部署,启动使用,停止使用。不足工具函数的访问需要自己手动添加扩展另没有写测试,希望下次补上。 前言 这段时间,用Eggjs作为后端服务框架开发了几个项目。项目都很小,但为了进一步了解Eggjs,特意选择了Eggjs作为框架基础开发后端服务。...

    waltr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<