node mysql单例_node.js 和 mongoskin 通过单体模式连接访问数据库

a4de8c3777b8483c1f9b1c95eeb73ba5.png

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值