天天看點

Mongoose子產品化實踐

Mongoose為操作MongoDB資料庫提供了很大的友善,在實際開發過程中,為了保證可擴充與可維護性,通常會将Mongoose進行子產品化,下面記錄一個子產品化的執行個體,便于在以後的項目中複用。

1. 定義db.js,連接配接資料庫

var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/test', { useNewUrlParser: true }, function (err) {
    if (err) {
        console.log(err);
        return;
    }
    console.log('資料庫連接配接成功')
});

module.exports = mongoose           

複制

連接配接參數說明:

第一個參數為資料庫的位址,如果設定了密碼的話,記得加上使用者名和密碼,格式如下:

mongodb://test_admin:[email protected]:27017/test

第二個參數 useNewUrlParser 屬性會在url裡識别驗證使用者所需的資料庫,4.x以上的版本需要加,否則會有警告産生。

第三個參數 為回調函數用來确認資料庫是否連接配接成功。

2. 引入定義的db.js檔案,生成schema,建立模型并導出,檔案名為user.js

var mongoose=require('./db.js');

var UserSchema=mongoose.Schema({
    name:String,
    age:Number,
    // 指定預設參數
    status:{
        type:Number,
        default:1   
    }
})
module.exports=mongoose.model('User',UserSchema,'user');           

複制

3. 在需要操作資料的頁面引入定義的user.js,執行相關操作。

var UserModel=require('./model/user.js');

var user=new UserModel({
    name:"李四",
    age:40
})
// 執行新增操作
user.save(function(err){
    if(err){
        console.log(err);
        return;
    }
    // 擷取user表的資料
    UserModel.find({},function(err,docs){
        if(err){
            console.log(err);
            return;
        }
        console.log(docs);
    })
})           

複制

大家可能發現在定義schema時,引入了db.js檔案,即連接配接了一次資料庫,那麼調用多個schema時,是否會多次連接配接資料庫了,其實在mongoose的底層已經做了單例模式的處理,也就是說隻會在第一次連接配接時比較耗時,後續的連接配接執行都會很快。