文档章节

pomelo中使用mysql

piggybear
 piggybear
发布于 2015/02/16 10:28
字数 861
阅读 28
收藏 0
点赞 0
评论 0

声明:本人纯服务器开发新手菜鸟,分析的不一定正确,分析的也没啥技术含量,主要是mysql的使用比较分散,集中到一起给新手看着省事,也可能会误导大家,自己小心点。
准备工作:
1.先创建mysql.json配置文件,里面放数据库名子 帐号密码端口。
2.用mysql命令行创建个跟配置文件中名字相同的数据库,然后创建个表,启动数据库。
3.npm install mysql,npm install generic-pool;
代码:
1.在app.js中加载mysql.json配置文件
app.loadConfig('mysql', app.getBase() + '/config/mysql.json');

 2.在app.js中为每个需要访问数据库的server创建dbclient,dbclient就是与数据库的一个客户端

app.configure('production|development', 'chat', function ()
{
var dbclient = require('./app/dao/mysql/mysql').init(app);
app.set('dbclient', dbclient);//这个dbclient就是访问数据库的接口
});

 3. dao-pool.js 这个主要是创建连接池,作用是提高访问效率的,比如一个进程需要个长时间读取数据库动作,如果没有这个池,只能等完成,有了这个池子就可以再建立个连接,这个池子就是管理这些连接的管理器。这分析完全不知道靠不靠谱。

网上找文档时发现这样一段描述generc-pool缺陷的话******:
“generc-pool小巧精悍,总共只有几百行,完全由js代码写成。使用的方法页很简单。但是有一点不足的地方是,实例A和实例B建立链接,初始化连接池poolAB之后,如果实例A在守护进程的作用下进行了重启,此时poolAB中的所有连接都会失效,但是generic-pool本身只对超时的连接进行了处理,对于这种虽然没有超时但是已经失效的连接并没有相应操作。这个缺陷为我的工作带来了极大困扰。我对该模块进行了小小的改动,实现了对失效链接的处理。
”, 不知道需要处理下不?
原文链接:http://blog.csdn.net/zenghuaidong/article/details/7428808
var createMysqlPool = function(app) {
var mysqlConfig = app.get('mysql'); //获取mysql配置信息
return _poolModule.Pool({
name: 'mysql',//pool的名字
create: function(callback) {
var mysql = require('mysql');//加载mysql 模块
var client = mysql.createConnection({
host: mysqlConfig.host,
user: mysqlConfig.user,
password: mysqlConfig.password,
database: mysqlConfig.database
});
callback(null, client);
},
destroy: function(client) {
client.end();
},
max: 10, //池子的最大连接接容量
idleTimeoutMillis : 30000,一个连接超过这个值就断开。
log : false
});
};

  1. mysql.js 这个文件是给应用使用的数据库接口 var NND = {}; //实在没看懂NND什么意思,娘娘的。难道真是“娘娘的”? NND.init = function(app){ _pool = require('./dao-pool').createMysqlPool(app); };

NND.query = function(sql, args, cb){
_pool.acquire(function(err, client) {
if (!!err) {
console.error('[sqlqueryErr] '+err.stack);
return;
}
client.query(sql, args, function(err, res) {
_pool.release(client);//这里要注意下,释放这个client,估计上边的idleTimeoutMillis ,就是在这之后开始统计,如果没有访问数据库操作,这就这个app与数据库的链接断开
cb(err, res);
});
});
};

NND.shutdown = function(){
_pool.destroyAllNow();
};

/**

  • init database
    */
    sqlclient.init = function(app) {

    if (!!_pool){
    return sqlclient;
    } else {
    NND.init(app);
    sqlclient.insert = NND.query;
    sqlclient.update = NND.query;
    sqlclient.delete = NND.query;
    sqlclient.query = NND.query;
    console.log("init Ok");
    return sqlclient;
    }
    };

/**

  • shutdown database */ sqlclient.shutdown = function(app) { NND.shutdown(app); }; 5.然后就可以在chat server中使用sql语句与dbclient访问数据库了

chatDao.addChatHistorySql = function(playerName,txt ,cb) {
var sql = 'insert into chatList (playerName, txt) values ( ?, ?)';
var args = [playerName, txt];

var dbclient = pomelo.app.get('dbclient');
console.log(dbclient);
dbclient.insert(sql, args, function(err, res) {
    if (err) {
        logger.error('create chatList for chatDao failed! ' + err.stack);
        //utils.invokeCallback(cb, err, null);
    } else {
        console.log("sql save Ok!");
        //var bag = new Bag({id: res.insertId});
        //utils.invokeCallback(cb, null, bag);
    }
});

};
弄完这个就该去看Sync了。

本文转载自:http://blog.csdn.net/aa294194253/article/details/41330175

共有 人打赏支持
piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
windows安装 lord of pomelo

首先要知道什么是pomelo? Pomelo是基于node.js的高性能、分布式游戏服务器框架,通过一些简单的命令,就可以实现强大的功能,帮助你避免游戏开发中枯燥的重复劳动和底层逻辑。目前pomelo(>=...

ln_bo
2012/12/31
0
0
网易开源游戏服务器框架 pomelo 0.9 版发布

pomelo 0.9版于2月26日发布,以下是该版本的新特性。 pomelo websocket支持自动重连 在pomelo 0.9版本中,pomelo-jsclient-websocket 支持自动重连。重连发生在连接断开后的5s后,在重连失败...

谢骋超
2014/02/27
7.8K
5
网易开源游戏服务器框架 pomelo 发布 0.6 版

pomelo 0.6是一次很大的升级, 是自0.3版以来最重要的一次升级 在Pomelo 0.6版本中,对pomelo部分结构进行了调整,将原有的globalChannel组件和master高可用组件从框架中移出,以一种插件的形...

谢骋超
2013/08/26
6.2K
7
网易正式发布 Pomelo 开源游戏服务端框架

10月20日的开源中国 杭州源创会 上,来自网易的 @谢骋超为大家介绍了网易即将开源的基于 Node.js 的游戏服务器框架 Pomelo (柚子),并称该框架将于11月正式开源。 今天这个框架终于正式跟我们...

oschina
2012/11/21
27.2K
97
pomelo 0.8 发布,网易游戏服务器框架

0.8 版本新特性 pomelo-cocos2d-jsb 对 cocos2d-x javaScript binding 环境有了支持,开发者可以很方便的使用 javaScript 来完成前后端的开发,并发布到 ios,android,web平台上 详细请看 po...

oschina
2013/12/25
4.8K
0
pomelo连接redis

本文基于上一篇博文(pomelo链接mysql) 现在吧数据库改为redis,先安装npm install redis 1.app.js添加代码 2.GoodsService.js 添加代码...

梦想游戏人
2016/07/12
280
0
pomelo链接mysql

本文基于上一篇博文(pomelo新建一个服务类型) 需求:玩家购买物品够添加到数据库中,以保存数据 准备工作: 已安装mysql 的windows版本 在app目录下新建dao/mysql/目录,在该目录下新建2个...

梦想游戏人
2016/07/11
1K
0
用VSCode远程调试Pomelo服务器子进程

pomelo是网易开源的轻量级游戏服务器框架。是基于node.js的多进程异步服务器框架。非重度游戏,完全可以用它来实现游戏服务器。 pomelo的地址是:https://github.com/NetEase/pomelo,大家可以...

zdhsoft
05/04
0
0
pomelo 1.0 preview版发布, 网易开源游戏服务器框架

## pomelo udpconnector提供 根据网友的要求,在pomelo 1.0中提供了udpconnector。在该udpconnector中,采用了pomelo之前hybridconnector提供的传输协议,包括握手、心跳及数据包的格式。该c...

谢骋超
2014/05/16
4.2K
9
如何使用阿里云主机搭建lordofpomelo

最近使用osc赠送的88元代金卷,用1元的价格购买了1个月阿里云主机..适逢网易开源了一个基于Node.js的游戏服务端框架 pomelo.就顺手搭建了一个官方提供的demo.网上看到很多同志搭建失败.这里分...

酒逍遥
2012/11/26
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MyBatis源码解读之延迟加载

1. 目的 本文主要解读MyBatis 延迟加载实现原理 2. 延迟加载如何使用 Setting 参数配置 设置参数 描述 有效值 默认值 lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延...

无忌
7分钟前
0
0
javascript 类变量的实现

代码如下: function echo(){ for(let i=0;i<arguments.length;i++) console.log(arguments[i]);}function extend(o, p){for (prop in p) {o[prop] = p[prop]}retur......

backbye
11分钟前
0
2
编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图): 凭什么说“Python 太慢,Java 太笨拙,我讨厌 JavaScript”?[图] 编程语言生而为何? 我们人类从原始社会就是用语言表达自己,互相沟通...

原创小博客
19分钟前
0
0
Akka构建Reactive应用《one》

看到这Akka的官网,描述使用java或者scala构建响应式,并发和分布式应用更加简单,听着很高级的样子,下面的小字写着消息驱动,但是在quickstart里面又写容错事件驱动,就是这么钻牛角尖。 ...

woshixin
31分钟前
0
0
ffmpeg源码分析 (四)

io_open 承接上一篇,对于avformat_open_input的分析还差其中非常重要的一步,就是io_open,该函数用于打开FFmpeg的输入输出文件。 在init_input中有这么一句 if ((ret = s->io_open(s, &s-...

街角的小丑
32分钟前
0
0
String,StringBuffer ,StringBuilder的区别

不同点 一、基类不同 StringBuffer、StringBuilder 都继承自AbStractStringBuilder,String 直接继承自 Object 2、底层容器“不同” 虽然底层都是字符数组,但是String的是final修饰的不可变...

不开心的时候不要学习
47分钟前
0
0
nodejs 文件操作

写文件code // 加载文件模块var fs = require("fs");var content = 'Hello World, 你好世界!';//params 文件名,内容,编码,回调fs.writeFile('./hello.txt',content,'utf8',function (er......

yanhl
50分钟前
0
0
SpringBoot mybits 查询为0条数据 但是在Navicat 中可以查询到数据

1.页面请求: 数据库查询: 2018-07-16 17:56:25.054 DEBUG 17312 --- [nio-9010-exec-3] c.s.h.m.C.selectSelective : ==> Preparing: select id, card_number, customer_id, customer_nam......

kuchawyz
今天
0
0
译:Self-Modifying cod 和cacheflush

date: 2014-11-26 09:53 翻译自: http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code Cache处在CPU核心与内存存储器之间,它给我们的感觉是,它具......

我叫半桶水
今天
0
0
Artificial Intelligence Yourself

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流...

孟飞阳
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部