• 首页
  • nodejs
  • node.js 和 mongoskin 通过单体模式连接访问数据库

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对象.

回到顶部