NodeJS - 使用Mongoose進行Mongodb數據庫連接

最近嘗試了一下Node的代碼,過程中用到了數據庫,現在總結一下並分享出來。

對於Mongodb的安裝,大家可以參考下這篇博客,保證良心,對了,是windows系統的。

對於Node層次的代碼,使用的KOA框架,參考的廖雪峯大神的示例,很贊。


1. 安裝,這裏用到的管理工具是yarn.

yarn install

2.連接數據庫

const mongoose = require('mongoose');

try{
    mongoose.connect('mongodb://localhost/test',{
        useMongoClient:true
    })
}catch(error){
    console.log(err)
}

mongoose.connection.once("open",function(){
    console.log('數據庫連接成功');
}).on('error',function(err){
    throw err
})

這裏做一下解釋,test是本地創建的一個數據庫,連接之後可以直接進行操作,未成功連接則直接拋出錯誤。

使用useMongoClient:true 可以避免Mongoose報出警告,還有一些其他的選項可以自己添加,可以參考這裏

3.創建數據庫表並連接

首先新建一個在最外層結構新建一個models文件夾,然後文件夾中新建login.js文件。

module.exports = function (mongoose) {
    var schema = mongoose.Schema({
        userName: {
            type: String,   //指定字段類型
            required:true,  //判斷數據是否必須(如果存在一條數據)
            unique:true   //是否爲不可重複
        },
        pass:{
            type:String
        }
    });
    return mongoose.model('User', schema);   //第一個變量是數據庫表名,第二個是使用的模板
}

對於上面的type,required等約束字符,想實現更多複雜功能可以瞭解這裏

然後在文件夾中新建index.js文件。

module.exports = function (instance) {
    return {
        User: require('./login')(instance)
    }
}

按照規律可以新建更多的模型文件,統一通過index.js導出

最後,要在app中把導出的model添加到ctx上。

mongoose.connection
    .once("open",function(){
        console.log('mongoose connection')
        const models = require('./models')(mongoose)   //引入模型
        app.use(async (ctx,next) => {    
            ctx.models = models;  //將模型的信息放到ctx中。
            await next();
        })
    })
    .on('error',function(error){
        throw error
    })

這樣之後就可以在項目中通過ctx直接調用數據庫的訪問操作了。

4.訪問網絡進行數據庫操作

在一個負責處理signin的controller裏面(不清楚的可以參照上述廖雪峯的網站),其實只要是個可以處理post請求的原生操作也可以,這裏不細說。

'POST /zhuce': async (ctx, next) => {
        var userName = ctx.request.body.userName || '';   //獲取post的參數
        var pass = ctx.request.body.pass || '';
        console.log(ctx.request)
        var user = new ctx.models.User({      //根據scheme生成對象
            userName:userName,
            pass:pass
        })
        user.save((err,rst) => {     //調用mongoose方法實現保存操作。
            if (err) {     //打印錯誤信息
                console.log("Error:" + err);
            }
            else {
                console.log("Res:" + rst);
            }
        })
    },

由於是後臺的處理操作,所以這裏就不涉及前端知識了,直接用Postman來測試。我使用的端口爲8080.



這樣就可以註冊成功了,由於名字設定的是unique,所以注意名字不要重複。

5.驗證操作是否成功

這裏有一點要注意一下,我們給數據庫起得名字叫做User,但是數據庫中生成的數據庫名稱爲users,這應該是mongoose幫忙轉換的。


以上就是這篇博客的所有內容了,有疑問歡迎交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章