1.0.2 • Published 6 years ago

pomelo-data-mgr v1.0.2

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

pomeloDataMgr

NPM Version NPM Downloads Node.js Version

mysql db redis cache plugin base on pomelo

作用分析

  • 有些初级甚至中级程序员,他们逻辑思维非常棒,但因为经验问题,在项目的产出上效率不是很理想.
  • 为了发挥这些工程师的优势,和降低研发难度.某封装了这个缓存和持久化的插件.
  • 于是,逻辑工程师仅需要关注逻辑,不再考虑缓存和持久化的问题.

成功案例

  • 某所在的公司有2个项目组,另一个项目组没有专门的服务器开发,一直是由前端程序在写服务器逻辑层的东西.
  • 公司领导让我去做个技术支持,帮忙把其服务器问题处理下(具体问题就不说了).
  • 某过去搭建了一个pomelo服务器,配置了该插件,并给前端程序讲解了该插件的使用方法(其实就是在什么情况下调用哪个接口).
  • 之后该前端程序用了小一周的时间,将其项目原来5,6个模块的逻辑移植到了新搭建的pomelo服务器上.效率很是可观.
  • 并且担负起了新模块的服务器研发.

依赖

"dependencies": {
    "db-mgr": "^1.0.3",
    "db-table": "^1.0.2",
    "table-redis": "^1.0.1"
}
  • 依赖的这几个包,都是最近独立封装出来的.
  • 使用请先安装配置db-mgr, db-table, table-redis
  • 之所以将这几个包分别独立出来,而不是统一的放在一个包中(原来确实是在一个包中).
  • 是因为这些包均不应该是单例模式,在项目中有可能新建另外的实例去负责别的事儿.

使用方法

  1. 进入pomelo的game-server下,执行命令:
npm install pomelo-data-mgr --save
  1. app.js中可配置服务,在需要的服务配置中,增加一行代码.比如在大厅服的配置.
app.configure('production|development', 'hall', function () {
    app.use(require('pomelo-data-mgr'));
});
  1. 在逻辑代码中需要数据支持的地方,使用如下代码:
pomelo.app.get('dataMgr').selectData(tableName, 主键值, 外键值, cb);

示例代码可在cb中取到tableName这张表中,外键值为1的数据. 同理调用其他方法,即可完成其他功能(无非就是CRUD).

使用注意

  • 该插件采用的是node原生的异步风格,并未支持同步方式(以后可能会改),所以使用者需适应异步编程的方式.

方法支持

  • 数据获取(主键值不为0,取主键对应数据,否则取外键对应的数据组)
selectData = function (tableName, priValue, forValue, cb)
  • 根据条件取数据
  • @param condition 返回符合条件的数据,必须含有主键值或者外键值
selectDataByCondition(tableName, condition, cb)
  • 插入数据(支持数组)
  • @param {JSON|Array} jsonArray
insertData = function (tableName, jsonArray, cb)
  • 数据更新
updateData = function(tableName, jsonValue, cb)
  • 删除数据
  • @param priValue // 想要删除的主键id,如果id为0则删除外键下的所有数据
deleteData = function(tableName, priValue, forValue, cb)
  • 根据外键值删除数据
deleteTableDataByForeignValue(tableName, foreignValue, cb)
  • 获得某个表的主键名
getPrimaryKey(tableName)
  • 某表某条件下数据是否存在,仅支持'='条件,不支持'<>'等条件.
isExist = function (tableName, condition, cb)
  • 根据根表和根表主键值,删除其和其下相关的数据缓存,不删除数据库.
deleteRedisCacheByFather = function(tableName, primaryValue, foreignValue, cb)
  • redis执行lua脚本,不会操作数据库(实际项目很少使用).
runLua