博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pomelo链接mysql
阅读量:6977 次
发布时间:2019-06-27

本文共 3600 字,大约阅读时间需要 12 分钟。

hot3.png

本文基于上一篇博文()

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

准备工作:

已安装mysql 的windows版本

先安装依赖库npm install mysqlnpm install generic-pool

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

新建文件dao-pool.jsvar _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 CRUDvar 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});	}}

运行测试,查看数据库111910_Wud4_1391394.png

服务端日志:

112006_ERwc_1391394.png

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/709473

你可能感兴趣的文章
Android蓝牙栈bluez使用方法
查看>>
软件安装
查看>>
go for select
查看>>
关于DOM的一些基础问题
查看>>
为EasyUI 的Tab 标签添加右键菜单
查看>>
JavaScript中清空数组的三种方式
查看>>
http://jqweui.com/
查看>>
C#中反射的使用(How to use reflect in CSharp)(2)
查看>>
maven扫盲
查看>>
FPGA笔试必会知识点2—FPGA器件
查看>>
github使用技巧
查看>>
js基本类型存放和对象存放的区别(对象遍历)
查看>>
转载 数据库设计E-R图
查看>>
利用Pandas和matplotlib分析我爱我家房租区间频率
查看>>
动态DP之全局平衡二叉树
查看>>
Scrapy下xpath基本的使用方法
查看>>
leetcode: Path Sum II 迭代法
查看>>
地域划分 编程题
查看>>
如何脱离eclipse前端开发
查看>>
VMware 克隆linux虚拟主机,网卡无法启动问题解决
查看>>