最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js中使用mongoskin操作mongoDB實(shí)例

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

一、廢話

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

二、幾個(gè)需要說的概念

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

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

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

(7)建議更改對外端口
(8)啟動(dòng)服務(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等機(jī)制。

(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)出一個(gè)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,因?yàn)樾枰恍顟B(tài)表示成功和失敗,后期可以拓展為驗(yàn)證碼錯(cuò)誤、短信驗(yàn)證錯(cuò)誤、用戶名錯(cuò)誤等

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

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

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

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

相關(guān)文章

  • 使用Puppeteer實(shí)現(xiàn)頁面遍歷的示例代碼

    使用Puppeteer實(shí)現(xiàn)頁面遍歷的示例代碼

    很多時(shí)候我們需要遍歷我們的頁面來檢查頁面是否存在問題,以更好的保證可用性和安全性,下面就來講講如何使用puppeteer來實(shí)現(xiàn)頁面遍歷的功能吧
    2023-06-06
  • Node.js實(shí)現(xiàn)文件上傳

    Node.js實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了Node.js實(shí)現(xiàn)文件上傳的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 學(xué)習(xí) NodeJS 第八天:Socket 通訊實(shí)例

    學(xué)習(xí) NodeJS 第八天:Socket 通訊實(shí)例

    本篇文章主要介紹了學(xué)習(xí) NodeJS 第八天:Socket 通訊實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • Node.js(安裝,啟動(dòng),測試)

    Node.js(安裝,啟動(dòng),測試)

    這里主要介紹基于windows平臺(tái)上最簡單方便的安裝方式,啟動(dòng)以及簡單測試
    2014-06-06
  • windows使用nvm對node進(jìn)行版本管理切換的完整步驟

    windows使用nvm對node進(jìn)行版本管理切換的完整步驟

    這篇文章主要介紹了windows使用nvm對node進(jìn)行版本管理切換的完整步驟,在使用之前各位務(wù)必卸載掉自己安裝過的nvm或者node版本包括環(huán)境變量之類的,要保證自己的電腦完全沒有node環(huán)境,需要的朋友可以參考下
    2024-03-03
  • NodeJS 創(chuàng)建目錄和文件的方法實(shí)例分析

    NodeJS 創(chuàng)建目錄和文件的方法實(shí)例分析

    這篇文章主要介紹了NodeJS 創(chuàng)建目錄和文件的方法,涉及node.js中fs模塊mkdir、writeFile及目錄判斷existsSync等方法的功能與相關(guān)使用技巧,需要的朋友可以參考下
    2023-04-04
  • node封裝一個(gè)控制臺(tái)進(jìn)度條插件???????詳情

    node封裝一個(gè)控制臺(tái)進(jìn)度條插件???????詳情

    這篇文章主要介紹了node封裝一個(gè)控制臺(tái)進(jìn)度條插件???????詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Node.js+Express.js+TS實(shí)現(xiàn)簡單圖床腳本

    Node.js+Express.js+TS實(shí)現(xiàn)簡單圖床腳本

    在這篇博客文章中,我將介紹如何使用 TypeScript 和 Express 框架來編寫一個(gè)簡單的圖床腳本,可以將本地圖片上傳到服務(wù)器,并返回圖片的 URL,這樣,你就可以在 Markdown 文檔中方便地引用圖片,而不用擔(dān)心圖片的存儲(chǔ)和管理問題
    2023-10-10
  • 簡單模擬node.js中require的加載機(jī)制

    簡單模擬node.js中require的加載機(jī)制

    大家都知道Node 采用的模塊化結(jié)構(gòu)是按照 CommonJS 規(guī)范,模塊與文件是一一對應(yīng)關(guān)系,即加載一個(gè)模塊,實(shí)際上就是加載對應(yīng)的一個(gè)模塊文件。這篇文章顯示簡單的介紹了nodejs中require的加載機(jī)制,而后簡單的模擬require函數(shù),有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 快速掌握Node.js環(huán)境的安裝與運(yùn)行方法

    快速掌握Node.js環(huán)境的安裝與運(yùn)行方法

    這篇文章主要介紹了Node.js環(huán)境的安裝與運(yùn)行方法,Node是基于Google Chrome V8引擎的JavaScript解釋器,需要的朋友可以參考下
    2016-02-02

最新評論

厦门市| 大名县| 和静县| 信阳市| 湘阴县| 焉耆| 封开县| 咸宁市| 图们市| 阳泉市| 孟州市| 内黄县| 呼和浩特市| 新绛县| 楚雄市| 景宁| 龙陵县| 巴青县| 虎林市| 勐海县| 景德镇市| 山丹县| 五峰| 合水县| 和平区| 喀喇沁旗| 修水县| 洱源县| 汨罗市| 鄂托克前旗| 碌曲县| 松溪县| 桐梓县| 双牌县| 巴林左旗| 西昌市| 临清市| 阜宁县| 化州市| 开江县| 柳林县|