亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node.js中使用mongoskin操作mongoDB實例

 更新時間:2014年09月28日 11:51:18   作者:mingaixin  
這篇文章主要介紹了Node.js中使用mongoskin操作mongoDB實例,Mongous是一個輕量級的nodejs mongodb驅(qū)動,需要的朋友可以參考下

一、廢話

從13年1月份接觸mongodb進行開發(fā),開發(fā)了旅游標(biāo)簽服務(wù)、微博標(biāo)簽檢索系統(tǒng)、地圖服務(wù)、web APP服務(wù)...使用MongoDB的場景從.NET、JAVA環(huán)境轉(zhuǎn)到了node.js平臺。越發(fā)覺Node.js和mongodb結(jié)合感覺的很好。感覺mongodb和node.js是天生的一對。的確,mongodb的客戶端是JS的解析引擎。因此,選擇mongodb和node.js做產(chǎn)品原型也是很nice的選擇。網(wǎng)上,遇到網(wǎng)友詢問mongodb的開發(fā),選擇哪個driver最好,以前一直是使用原生的driver,但是寫起來代碼有很多需要注意的,比如連接的關(guān)閉操作等等...因此,在node.js開發(fā)環(huán)境下我這里推薦使用mongoskin。

二、幾個需要說的概念

(1)數(shù)據(jù)庫:同關(guān)系數(shù)據(jù)庫一樣。
(2)集合: 關(guān)系數(shù)據(jù)庫中的表。
(3)文檔: 類比關(guān)系數(shù)據(jù)庫的記錄,實則是JSON對象。
(4)數(shù)據(jù)庫設(shè)計:建議考慮NoSQL設(shè)計,拋棄關(guān)系數(shù)據(jù)的設(shè)計思想;其實NoSQL數(shù)據(jù)庫設(shè)計博大精深,需要不斷地在項目中實踐。
(5)用戶體系:每一個數(shù)據(jù)庫都有自己的管理員,可以:

復(fù)制代碼 代碼如下:

use dbname; db.addUser('root_1' , 'test');

(7)建議更改對外端口
(8)啟動服務(wù)(這是win下,linux下稍作修改):
復(fù)制代碼 代碼如下:

mongod --dbpath "XX\MongoDB\data\db" --logpath "XX\MongoDB\log\mongo.log" --logappend -auth --port 7868

三、搭建mongodb開發(fā)基礎(chǔ)設(shè)施

(0) npm install mongoskin 安裝mongoskin

這里不介紹Node.js安裝、package等機制。

(1)創(chuàng)建配置文件 config.json

復(fù)制代碼 代碼如下:

{
    "dbname":"TEST",
    "port": "7868",
    "host": "127.0.0.1",
    "username": "test",
    "password": "test"
}

(2)創(chuàng)建util相關(guān)類mongo.js :導(dǎo)出一個DB對象

復(fù)制代碼 代碼如下:

var mongoskin = require('mongoskin'),
    config = require('./../config.json');

/*
 * @des:導(dǎo)出數(shù)據(jù)庫連接模塊
 * */
module.exports = (function(){
    var host = config.host,
        port = config.port,
        dbName = config.dbname,
        userName = config.username,
        password = config.password,
        str = 'mongodb://' + userName + ':' + password + '@' + host +':' + port+ '/' + dbName;

    var option = {
        native_parser: true
    };

    return mongoskin.db(str, option);
})();

(3)構(gòu)建CRUD的基礎(chǔ)類:為了減少重復(fù)CURD代碼,只需要傳入相關(guān)的JSON對象即可

復(fù)制代碼 代碼如下:

var db = require('./mongo.js'),
    status = require('./status'),
    mongoskin = require('mongoskin');


var CRUD = function(collection){
    this.collection = collection;
    db.bind(this.collection);
};

CRUD.prototype = {
    /*
    * @des: 創(chuàng)建一條記錄
    * @model: 插入的記錄,JSON格式的model
    * @callback:回調(diào),返回插入成功的記錄或者失敗信息
    *
    * */
    create: function(model, callback){
        db[this.collection].save(model, function(err, item){
            if(err) {
                return callback(status.fail);
            }
            item.status = status.success.status;
            item.message = status.success.message;
            return callback(item);
        });
    },

    /*
    * @des:讀取一條記錄
    * @query:查詢條件,Mongo查詢的JSON字面量
    * @callback:回調(diào),返回符合要求的記錄或者失敗信息
    *
    * */
    read: function(query, callback){
        db[this.collection].find(query).toArray(function(err, items){
            if(err){
                return callback(status.fail);
            }
            var obj = {
                status: status.success.status,
                message: status.success.message,
                items: items
            };

            return callback(obj);
        });
    },
    /*
    * @des:更新一條記錄
    * @query:查詢條件,Mongo查詢的JSON字面量,此處為_id
    * @updateModel:需要更新的JSON格式的模型
    * @callback:返回成功或者失敗信息
    *
    * */
    update: function(query, updateModel, callback){
        var set = {set: updateModel};
        db[this.collection].update(query, set, function(err){
            if(err){
                return callback(status.fail);
            }else{
                return callback(status.success);
            }
        });
    },

    /*
    * @des:刪除一條記錄
    * @query:查詢條件,Mongo查詢的JSON字面量
    * @callback:返回失敗或者成功的信息
    *
    * */
    deleteData: function(query, callback){
        db[this.collection].remove(query, function(err){
            if(err){
                return callback(status.fail);
            }
            return callback(status.success);
        });
    }
};


module.exports = CRUD;

(4)構(gòu)建status.json,因為需要一些狀態(tài)表示成功和失敗,后期可以拓展為驗證碼錯誤、短信驗證錯誤、用戶名錯誤等

復(fù)制代碼 代碼如下:

module.exports = {
    /*
    * 成功狀態(tài)
    *
    * */
    success: {
        status: 1,
        message: 'OK'
    },

    /*
    * 失敗狀態(tài)
    *
    * */
    fail: {
        status: 0,
        message: 'FAIL'
    },

    /*
    * 兩次輸入的密碼不一致
    * */
    repeatPassword: {
        status: 0,
        message: '兩次輸入的密碼不一致'
    }
 };

相關(guān)文章

  • node.js-path模塊你了解多少

    node.js-path模塊你了解多少

    這篇文章主要為大家詳細介紹了node.js-path模塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 利用node.js+mongodb如何搭建一個簡單登錄注冊的功能詳解

    利用node.js+mongodb如何搭建一個簡單登錄注冊的功能詳解

    這篇文章主要給大家介紹了關(guān)于利用node.js+mongodb如何搭建一個簡單登錄注冊功能的相關(guān)資料,文中通過示例代碼介紹非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • node.js中格式化數(shù)字增加千位符的幾種方法

    node.js中格式化數(shù)字增加千位符的幾種方法

    這篇文章主要介紹了node.js中格式化數(shù)字增加千位符的幾種方法,本文給出3種實現(xiàn)方法,并分別給出實例代碼,需要的朋友可以參考下
    2015-07-07
  • node.js中的url.resolve方法使用說明

    node.js中的url.resolve方法使用說明

    這篇文章主要介紹了node.js中的url.resolve方法使用說明,本文介紹了url.resolve的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • NodeJs版本過高無法啟動Vue項目報錯的幾種解決方法

    NodeJs版本過高無法啟動Vue項目報錯的幾種解決方法

    在開發(fā)vue項目時,我們通常使用nodejs作為項目的運行環(huán)境,但是有時候,由于nodejs版本過高,可能會導(dǎo)致vue項目啟動報錯,這篇文章主要給大家介紹了關(guān)于NodeJs版本過高無法啟動Vue項目報錯的幾種解決方法,需要的朋友可以參考下
    2023-12-12
  • Node.js中處理特殊字符的文件名解決方案

    Node.js中處理特殊字符的文件名解決方案

    在Node.js中,通過path模塊提供的basename方法,我們可以輕松地從文件路徑中提取文件名,在這篇文章中,我們將介紹一種安全穩(wěn)妥的方法,結(jié)合使用dirname和長度計算,以處理特殊字符的文件名,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Node.js API詳解之 os模塊用法實例分析

    Node.js API詳解之 os模塊用法實例分析

    這篇文章主要介紹了Node.js API詳解之 os模塊用法,結(jié)合實例形式分析了Node.js API中os模塊基本功能、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • NodeJs?Express路由使用流程解析

    NodeJs?Express路由使用流程解析

    路由路徑和請求方法一起定義了請求的端點,它可以是字符串、字符串模式或者正則表達式。后端在獲取路由后,可通過一系列類似中間件的函數(shù)去執(zhí)行事務(wù)
    2023-01-01
  • node.js中的fs.openSync方法使用說明

    node.js中的fs.openSync方法使用說明

    這篇文章主要介紹了node.js中的fs.openSync方法使用說明,本文介紹了fs.openSync方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 詳解autojs的nodejs編寫UI技巧示例

    詳解autojs的nodejs編寫UI技巧示例

    這篇文章主要為大家介紹了autojs的nodejs編寫UI技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論