node.js中使用连接MongoDB数据库的方法

在node中使用mongogb数据库

首先要安装mongodb模块:

npm install mongodb

连接MongoDB有两种方法:

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

一、使用MongoClient

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

创建MongoClient对象实例的语法:

var client= new MongoClient(new Server('localhost',27017,{...},{...}));

参数解释:

  • localhost: 主机名
  • 27017: 默认连接端口号
  • 第一个{…}: Server对象配置
  • 第二个{…}: 数据库连接选项配置

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

举个栗子:

var MongoClient = require('mongodb').MongoClient,  
    Server      = require('mongodb').server;

// 创建客户端连接对象
var client = new MongoClient( new Server(
                                        'localhost', 
                                        27017, 
                                        {
                                            socketOpations: { connectTimeoutMS: 500 },
                                            poolSize: 5,
                                            auto_reconnect: true
                                        }, 
                                        {
                                            numberOfRetries: 3,
                                            retryMilliSeconds: 500
                                        }));

// 打开对服务器端MongoDB数据库的连接
client.open(function(err, client) {
    if ( err ) {
        console.log('连接失败!');
    } else {
        var db = client.db('blogdb');  // 建立到数据库blogdb的连接
        if ( db ) {
            console.log('连接成功');
            db.authenticate('username', 'pwd', function(err, result) {   // 对用户数据库身份进行验证
                if ( err ) {
                    console.log('数据库用户身份验证失败');
                    client.close();  // 关闭对MongoDB的连接
                    console.log('连接已关闭......');
                } else {
                    console.log('用户身份验证通过');
                    db.logout(function (err, result) {  // 关闭对数据库的连接,即退出数据库
                        if ( !err ) {
                            console.log('退出数据库出错');
                        }

                        client.close();  // 关闭对MongoDB的连接
                        console.log( '已关闭连接......' );
                    });
                }
            });
        }
    }
});

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

写入关注

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

来创建MongoClient连接的Server对象的选项,如下:
这里写图片描述
用来创建MongoClient连接的数据库连接选项,如下:
这里写图片描述

二、使用连接字符串

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

MongoClient.connect(connString, options, callback)

connString字符串的语法如下:

mongodb://username:password@host:port/database?opations

MongoClient连接字符串组件:
MongoClient连接字符串组件

举个栗子:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://mongodb:test@localhost:27017/blogdb', {
                        db: { w: 1, native_parser: false },
                        server: {
                            poolSize: 5,
                            socketOpations: { connectTimeoutMS: 500 },
                            auto_reconnect: true
                        },
                        replSet: {},
                        mongos: {}

                    }, function(err, db) {
                        if ( err ) {
                            console.log('连接失败!');
                        } else {
                            console.log('连接成功!');
                            // 注销数据库
                            db.logout(function(err, result) {
                                if ( err ) {
                                    console.log('注销失败...');
                                }

                                db.close();  // 关闭连接
                                console.log('连接已经关闭!');
                            });
                        }

});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值