午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    Node.js中使用mongoskin操作mongoDB實(shí)例
    來源:易賢網(wǎng) 閱讀:2920 次 日期:2014-09-29 11:16:32
    溫馨提示:易賢網(wǎng)小編為您整理了“Node.js中使用mongoskin操作mongoDB實(shí)例”,方便廣大網(wǎ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是天生的一對(duì)。的確,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對(duì)象。

    (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ù)庫都有自己的管理員,可以:

    代碼如下:

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

    (7)建議更改對(duì)外端口

    (8)啟動(dòng)服務(wù)(這是win下,linux下稍作修改):

    代碼如下:

    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

    代碼如下:

    {

    "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對(duì)象

    代碼如下:

    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對(duì)象即可

    代碼如下:

    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ò)誤等

    代碼如下:

    module.exports = {

    /*

    * 成功狀態(tài)

    *

    * */

    success: {

    status: 1,

    message: 'OK'

    },

    /*

    * 失敗狀態(tài)

    *

    * */

    fail: {

    status: 0,

    message: 'FAIL'

    },

    /*

    * 兩次輸入的密碼不一致

    * */

    repeatPassword: {

    status: 0,

    message: '兩次輸入的密碼不一致'

    }

    };

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目
    易賢網(wǎng)手機(jī)網(wǎng)站地址:Node.js中使用mongoskin操作mongoDB實(shí)例
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)