nodejs mongodb3.6.2 insertOne callback问题

互联网 2021/9/14 19:08:27

npm mongodb包版本:3.6.2 mongodb服务版本:4.0.1想要模拟一下mongodb服务进程挂掉时,起用备用文件日志。 模拟流程:启动应用时,正常连接mongo,开个10s定时器,写入mongo数据,在10s内手动停掉mongo服务。示例代码:const db = mongodb.db(playlog); console.log(db2…

npm mongodb包版本:3.6.2

mongodb服务版本:4.0.1

 

想要模拟一下mongodb服务进程挂掉时,起用备用文件日志。

模拟流程:启动应用时,正常连接mongo,开个10s定时器,写入mongo数据,在10s内手动停掉mongo服务。

 

示例代码:

const db = mongodb.db('playlog');
console.log('db2');
try {
   console.log('collection1');
   const collection = db.collection('play_test');
   console.log('collection2');
   console.log('isConnected:', mongodb.isConnected());

   collection.insertOne({ k: 22 }, function(err, result) {
     console.log(err);
   });

   console.log('haha', res);

} catch (err) {
   console.log('got error', err);
}

 

上面代码,发现console.log从db2打到haha,但没有调用insertOne函数的callback。

 

改用await方式:

const db = mongodb.db('playlog');
console.log('db2');
try {
   console.log('collection1');
   const collection = db.collection('play_test');
   console.log('collection2');
   console.log('isConnected:', mongodb.isConnected());

   await collection.insertOne({ k: 22 });

   console.log('haha');

} catch (err) {
   console.log('got error', err);
}

发现console.log只走到isConnected: false,后续没任何日志,catch也没有日志。

 

再改用下面代码:

const db = mongodb.db('playlog');
console.log('db2');
try {
   console.log('collection1');
   const collection = db.collection('play_test');
   console.log('collection2');
   console.log('isConnected:', mongodb.isConnected());

   await collection.insertOne({ k: 22 }, function(err, result) {
     console.log(err);
   });

   console.log('haha', res);

} catch (err) {
   console.log('got error', err);
}

这时跟第一种情况一样,打印到haha,无catch,无insertOne callBack。

 

 

换到4.x版本正常,但4.x需要node12.9+版本。线上是10.15,不能随便升级到4.x,只能自己判断.

 

随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[nodejs mongodb3.6.2 insertOne callback问题]http://www.zyiz.net/tech/detail-228138.html

上一篇:python爬虫--从企查查获取所有上市公司列表保存至json

下一篇:基于node.js的Express框架介绍(前端同学写接口,让后端同学没接口可写)

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>
扫一扫关注最新编程教程