nodejs mongodb连接/断开模式

我用mongodb为后端使用sails.js。 而且我听说为每个请求连接到数据库可能非常昂贵,这就是为什么其他非单线程编程语言为数据库持有连接池的原因? 所以我想知道

  1. Nodejs是否利用数据库连接池?(我想我已经有一个答案是否定的,只是为了确保)
  2. 既然我用mongodb驱动程序使用sails-mongo,那么每当我对mongodb做一些指示时,是否会build立与mongodb的新连接? 或者它只是保持一个连接,并每次重复使用它?
  3. 假设sails-mongo每次连接到mongodb然后断开连接,那么如果连接不能build立呢? 会干扰节点线程,因此以后所有请求都无法处理? 我很担心…

你假设在1处分开,因为我所知道的每个nodejs驱动程序(包括sails中的普通驱动程序)都实现了当然初始化连接池的节点native驱动程序 (默认是5个连接)。

至于第2点,连接实际上是在应用程序启动时进行的,模型定义使用底层的“集合”对象。

对于3来说,除了一般的“卸载”之外,一般来说,nodejs的整个概念是运行在一个事件引擎上,所以实际上所有“长时间运行的IO”都在callback上工作,以便其他代码可以执行那些IO调用“花时间”来回应。 如果有的话,如果连接因任何原因“消失”,则会出现错误。

我通常会build议一个关于“nodejs如何工作”的“search”? 来填补你对一些概念的理解。

所以不仅仅是MongoDB的情况,但是所有的好的数据库驱动程序都是由于创build连接的inheritance代价而总是实现一个连接池,asynchronous环境是特别“打”的,所以在做外部IO之类的时候不会“阻塞” 。