3.1 Mongoose安装、创建、连接

安装

首先你必须安装MongoDBNodeJS

安装nodejsmongodb之后 ,使用npm来安装mongoose

$ npm install mongoose

安装成功后,就可以通过 require('mongoose') 来使用

连接数据库

使用require()方法在项目中包含mongoose后,接下来使用connect()方法连接到MongoDB数据库

connect()

connect()最简单的使用方式,就是只要传入url参数即可,连接到本地localhost的db1服务器

 var mongoose = require('mongoose');    //引用mongoose模块
  // mongoose.connect('mongodb://localhost/db1') 或者
 var db = mongoose.createConnection('localhost','db1'); //创建一个数据库连接

传递用户名、密码

mongoose.connect('mongodb://username:password@host:port/database?options...');

options

connect()方法还接受一个选项对象options,该对象将传递给底层驱动程序。这里所包含的所有选项优先于连接字符串中传递的选项

mongoose.connect(uri, options);

可用选项如下所示

  • db -数据库设置

  • server -服务器设置

  • replset -副本集设置

  • user -用户名

  • pass -密码

  • auth -鉴权选项

  • mongos -连接多个数据库

  • promiseLibrary

var options = {
  db: { native_parser: true },
  server: { poolSize: 5 },
  replset: { rs_name: 'myReplicaSetName' },
  user: 'myUserName',
  pass: 'myPassword'
}
mongoose.connect(uri, options);

连接多个数据库

如果要连接多个数据库,只需要设置多个url以,隔开,同时设置mongos为true

mongoose.connect('urlA,urlB,...', {
   mongos : true 
})

回调

connect()函数还接受一个回调参数

mongoose.connect(uri, options, function(error) {

});

执行下列代码后,控制台输出“连接成功”

var mongoose = require('mongoose');
mongoose.connect("mongodb://localhost/test", function(err) {
    if(err){
        console.log('连接失败');
    }else{
        console.log('连接成功');
    }
});

如果开启鉴权控制,以用户名"u1",密码"123456"登录'db1'数据库。执行代码后,控制台输出“连接成功”

var mongoose = require('mongoose');
mongoose.connect("mongodb://u1:123456@localhost/db1", function(err) {
    if(err){
        console.log('连接失败');
    }else{
        console.log('连接成功');
    }
});

disconnect()

mongoose.disconnect()

使用disconnect()方法可以断开连接

var mongoose = require('mongoose');
mongoose.connect("mongodb://u1:123456@localhost/db1", function(err) {
    if(err){
        console.log('连接失败');
    }else{
        console.log('连接成功');
    }
});
setTimeout(function(){
    mongoose.disconnect(function(){
        console.log("断开连接");
    })
}, 2000);

Last updated

Was this helpful?