• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

[MongoDB学习笔记-02] Node.js连接MongoDB的两种方法

mysql 搞代码 4年前 (2022-01-09) 35次浏览 已收录 0个评论

MongoDB Node.js驱动程序是被官方所支持的原生Node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持。MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法。 npm install mongodb @1 .4 .3 // MongoDB Node.js驱动程序 npm install

MongoDB Node.js驱动程序是被官方所支持的原生Node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持。MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法。

<code class=" hljs mel">npm install mongodb<span class="hljs-variable">@1</span><span class="hljs-number">.4</span><span class="hljs-number">.3</span>     <span class="hljs-comment">// MongoDB Node.js驱动程序</span>npm install mongoose<span class="hljs-variable">@3</span><span class="hljs-number">.8</span><span class="hljs-number">.8</span>    <span class="hljs-comment">//mongoose模块</span></code>

要从Node.js连接MongoDB数据库我们有两种方法可选择:

  1. 通过实例化mongodb模块中提供的mongodbClient类,然后使用这个实例化的对象来创建和管理mongodb连接;
  2. 使用字符串进行连接;

1、通过client对象连接到MongoDB

通过实例化一个MongoClient对象连接MongoDB数据库是最常用也是最佳的方式。

创建MongoClient对象实例的语法:

<code class=" hljs axapta">MongoClient( <span class="hljs-keyword">server</span>, options );</code>

server : 一个serverd对象;
options : 数据库连接选项;

如上图所示,MongoClient连接利用了后台的Server对象。这个对象的功能就是定义了MongoDB驱动程序怎么连接到服务器。

下面,看一个示例:

<code class=" hljs javascript"><span class="hljs-keyword">var</span> MongoClient = <span class="hljs-built_in">require</span>(<span class="hljs-string">'mongodb'</span>).MongoClient,      Server      = <span class="hljs-built_in">require</span>(<span class="hljs-string">'mongodb'</span>).server;<span class="hljs-comment">// 创建客户端连接对象</span><span class="hljs-keyword">var</span> client = <span class="hljs-keyword">new</span> MongoClient( <span class="hljs-keyword">new</span> Server(<span class="hljs-string">'localhost'</span>, <span class="hljs-number">27017</span>, {                                            socketOpations: { connectTimeoutMS: <span class="hljs-number">500</span> },                                            poolSize: <span class="hljs-number">5</span>,                                            auto_reconnect: <span class="hljs-literal">true</span>                                        }, {                                            numberOfRetries: <span class="hljs-number">3</span>,                                            retryMilliSeconds: <span class="hljs-number">500</span>                                        }));<span class="hljs-comment">// 打开对服务器端MongoDB数据库的连接</span>client.open(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(err, client)</span> {</span>    <span class="hljs-keyword">if</span> ( err ) {        console.log(<span class="hljs-string">'连接失败!'</span>);    } <span class="hljs-keyword">else</span> {        <span class="hljs-keyword">var</span> db = client.db(<span class="hljs-string">'blogdb'</span>);  <span class="hljs-comment">// 建立到数据库blogdb的连接</span>        <span class="hljs-keyword">if</span> ( db ) {            console.log(<span class="hljs-string">'连接成功'</span>);            db.authenticate(<span class="hljs-string">'username'</span>, <span class="hljs-string">'pwd'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(err, result)</span> {</span>   <span class="hljs-comment">// 对用户数据库身份进行验证</span>                <span class="hljs-keyword">if</span> ( err ) {                    console.log(<span class="hljs-string">'数据库用户身份验证失败'</span>);         <i>本文来源gaodai$ma#com搞$$代**码网</i>           client.close();  <span class="hljs-comment">// 关闭对MongoDB的连接</span>                    console.log(<span class="hljs-string">'连接已关闭......'</span>);                } <span class="hljs-keyword">else</span> {                    console.log(<span class="hljs-string">'用户身份验证通过'</span>);                    db.logout(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(err, result)</span> {</span>  <span class="hljs-comment">// 关闭对数据库的连接,即退出数据库</span>                        <span class="hljs-keyword">if</span> ( !err ) {                            console.log(<span class="hljs-string">'退出数据库出错'</span>);                        }                        client.close();  <span class="hljs-comment">// 关闭对MongoDB的连接</span>                        console.log( <span class="hljs-string">'已关闭连接......'</span> );                    });                }            });        }    }});</code>

注意: 要注销数据库,要使用数据库对象上的logout()方法。这将关闭到该数据库上的连接,你不在可以使用Db对象。例如: db.logout();而要关闭到MongoDB的连接,要在客户端连接上调用close()方法,例如: client.close()

写入关注

首先,我们在连接数据库的时候会用到一个关于写入关注级别的问题,说白了,个人理解的话就是相当于出现问题的一个处理优先顺序,你可以选择写入数据库之前是否需要你确认之类的,或者发生错误是否忽略之类的等等,如下图:

写 入 级 别 说 明
-1 网络错误被忽略
0 写确认是不必要的
1 请求写确认
2 写确认请求跨主服务器和副本集中的一个辅助服务器
majority 写确认是从副本集的主服务器请求的

用来创建MongoClient连接的Server对象的选项,如下:

用来创建MongoClient连接的数据库连接选项,如下:


2、通过一个连接字符串连接到MongoDB

这种方式要调用MongoClient类的connect( )方法。connect使用语法如下:

<code class=" hljs perl">MongoClient.<span class="hljs-keyword">connect</span>(connString, options, callback)</code>

connString字符串的语法如下:

<code class=" hljs cs">mongodb:<span class="hljs-comment">//username:password@host:port/database?opations</span></code>

MongoClient连接字符串组件:

选 项 说 明
mongodb:// 指定字符串使用mongodb的连接格式
username 验证时使用的用户名。可选
password 身份验证时使用的密码。可选
host MongoDB服务器主机名或者域名。它可以是多个host:port组合来连接多个MongoDB服务器。 例如:mongodb://host1:270017, host2://270017, host3:270017/testDB
port 连接MongoDB服务器时使用的端口。默认值是27017
database 要连接的数据库的名字。 默认为admin
options 连接时所使用的选项的键值对。可以在dbOpt和serverOpt参数上指定这些选项

下面,看一个使用连接字符串方法连接MongoDB数据库的示例:

<code class=" hljs javascript"><span class="hljs-keyword">var</span> MongoClient = <span class="hljs-built_in">require</span>(<span class="hljs-string">'mongodb'</span>).MongoClient;MongoClient.connect(<span class="hljs-string">'mongodb://mongodb:test@localhost:27017/blogdb'</span>, {                        db: { w: <span class="hljs-number">1</span>, native_parser: <span class="hljs-literal">false</span> },                        server: {                            poolSize: <span class="hljs-number">5</span>,                            socketOpations: { connectTimeoutMS: <span class="hljs-number">500</span> },                            auto_reconnect: <span class="hljs-literal">true</span>                        },                        replSet: {},                        mongos: {}                    }, <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(err, db)</span> {</span>                        <span class="hljs-keyword">if</span> ( err ) {                            console.log(<span class="hljs-string">'连接失败!'</span>);                        } <span class="hljs-keyword">else</span> {                            console.log(<span class="hljs-string">'连接成功!'</span>);                            <span class="hljs-comment">// 注销数据库</span>                            db.logout(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(err, result)</span> {</span>                                <span class="hljs-keyword">if</span> ( err ) {                                    console.log(<span class="hljs-string">'注销失败...'</span>);                                }                                db.close();  <span class="hljs-comment">// 关闭连接</span>                                console.log(<span class="hljs-string">'连接已经关闭!'</span>);                            });                        }});</code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[MongoDB学习笔记-02] Node.js连接MongoDB的两种方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址