pomelo mysql_pomelo链接mysql

需求:玩家购买物品够添加到数据库中,以保存数据

准备工作:

已安装mysql 的windows版本

先安装依赖库

npm install mysql

npm install generic-pool

在app目录下新建dao/mysql/目录,在该目录下新建2个文件

新建文件dao-pool.js

var _poolModule = require('generic-pool');

/*

* Create mysql connection pool.

*/

var createMysqlPool = function(app) {

var mysqlConfig = app.get('mysql');

return _poolModule.Pool({

name: 'mysql',

create: function(callback) {

var mysql = require('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

});

};

exports.createMysqlPool = createMysqlPool;

新建文件mysql.js

// mysql CRUD

var sqlclient = module.exports;

var _pool;

var NND = {};

/*

* Init sql connection pool

* @param {Object} app The app for the server.

*/

NND.init = function(app){

_pool = require('./dao-pool').createMysqlPool(app);

};

/**

* Excute sql statement

* @param {String} sql Statement The sql need to excute.

* @param {Object} args The args for the sql.

* @param {fuction} cb Callback function.

*

*/

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);

cb(err, res);

});

});

};

/**

* Close connection pool.

*/

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;

return sqlclient;

}

};

/**

* shutdown database

*/

sqlclient.shutdown = function(app) {

NND.shutdown(app);

};

新建配置文件

新建文件mysql.json

{

"development": {

"host" : "127.0.0.1",

"port" : "3306",

"database" : "pomelo",

"user" : "root",

"password" : ""

},

"production": {

"host" : "127.0.0.1",

"port" : "3306",

"database" : "pomelo",

"user" : "root",

"password" : ""

}

}

准备工作完毕。/******************************************************************************/

app.js添加以下代码

app.loadConfig("mysql", app.getBase() + "/config/mysql.json"); // 添加配置

app.configure('production|development', "game", function () {

var dbclient = require("./app/dao/mysql/mysql.js").init(app); // 初始化dbclient

app.set("dbclient", dbclient);// dbclient 为外部数据库接口,app,get("dbclient") 来使用

})

修改gameHandler.js的购买接口  buyGoods  函数

handler.buyGoods=function(msg,session,next){

var id=msg.id;

var count = msg.count;

///

console.log("购买物品玩家 uid:" + session.uid);

if (id == "100" && count == 1) {//验证购买条件

//允许购买

var sql = " insert into `goods` (`id`, `owner`) VALUES(?, ?)";

var args = [id, session.uid];

var dbclient = pomelo.app.get('dbclient');//获取全局mysql client

console.log(dbclient);

dbclient.query(sql, args, function (err, res) {//执行sql语句 函数insert和query等效

console.log("......................");

console.log(err + " " + JSON.stringify(res));

console.log("......................");

if (err) { // 数据库操作失败

next(null, { msg: "购买失败,服务器错误!", code: 200 });

}

else {//购买成功

next(null, { msg: "购买物品:#活血丹 成功", code: 200 });

}

}

);

}else{ // 不允许购买

next(null,{msg:"你的金币不足,购买失败",code:200});

}

}

运行测试,查看数据库

c389e0730ba3c2acf2ffc29b222f4f0e.png

服务端日志:

126bda05d7abfb5b6991aaf81fe17f84.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值