node.js 和 mongoskin 通过单体模式连接访问数据库
学习mongoskin时发现获取db对象时应用了单体模式,顺便温习一下.
单体模式是设计模式里最简单的一个,也是最实用的一个.
单体模式也叫单例模式,有个明显的特征,全局只允许初始化一次,
应用场景:银行卡 ,银行系统中的每一张银行卡都是一个单体,全局只允许初始化一次,避免多终端(柜台,ATM,手机银行app,电话银行 )等同时操作存取款时而引起的数据不一致的问题.对于一个引用类型的单体对象,一个进程访问时通常会对此object加锁,保证数据同步,银行系统更要如此.
看下mongoskin 连接mongoDB的代码吧.
var mongoskin = require('mongoskin'); var db = null; exports.getCollection = function (collectionName) { if (!db) { //连接本机mongodb ,使用帐号密码连接 mongoskin.db('username:password@服务器ip/数据库名 db = mongoskin.db('mongodb://127.0.0.1:27017/test?auto_reconnect=true&poolSize=3', {numberOfRetries: 1, retryMiliSeconds: 500, safe: true, native_parser: true}, {socketOptions: {timeout: 5000}} ); } return db.collection(collectionName); }
上面的db对象就是一个全局单体.
当db是null时,通过配置打开mongoDB数据库,将打开的对象赋给全局单体db
当db不为null时,直接返回db对象.