关于NodeJs为什么要用mongoose操作mongodb

很多nodejs的新手都是直接用mongodb本身直接操作数据库,我之前也是如此
不知道大家有没有遇到过这个错误:
Error: db object already connecting, open cannot be called multiple times
也许你会说是异步写得不好,但是就算异步写得再好,也逃避不了这个错误
于是就有一个问题:刷新得太快,或者多个用户同时访问数据库,数据库没来得及关闭,那个Error就会出现
可以做一下实验,在访问数据库的页面按住F5,就会很容易看到在页面上或者控制台上抛出的Error勒
用mongoose就不会出现这错误勒,因为一旦连接好数据库,db就会处于open状态,不存在访问时要打开,然后又要关闭的规则,然后我果断把所有mongodb部分改为mongoose,按住F5毫无压力啊,而且尼玛代码又短了一大截!
前后代码对比一下:
之前每次操作要open:
User.get = function get(username, callback) {
mongodb.open(function(err, db) {if (err) {return callback(err);}//读取 users 集合
db.collection('users', function(err, collection) {if (err) {mongodb.close();
return callback(err);}//查找 name 属性为 username 的文档
collection.findOne({name: username}, function(err, doc) {
mongodb.close();
if (doc) callback (err, doc);
else callback (err, null);});});});};现在,建立好mongoose对象模型后只需几行代码即可实现相同的功能:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值