欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Wondows下Node.js使用MongoDB的環(huán)境配置

 更新時間:2016年03月01日 16:34:36   作者:fourlee  
這篇文章主要介紹了詳解Wondows下Node.js使用MongoDB的環(huán)境配置,這里使用到了Mongoose驅(qū)動來讓JavaScript操作MongoDB,需要的朋友可以參考下

為了保存網(wǎng)站的用戶數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù),通常需要一個數(shù)據(jù)庫。MongoDB和Node.js特別般配,因為MongoDB是基于文檔的非關(guān)系型數(shù)據(jù)庫,文檔是按BSON(JSON的輕量化二進制格式)存儲的,增刪改查等管理數(shù)據(jù)庫的命令和JavaScript語法很像。如果你在Node.js里訪問MongoDB的數(shù)據(jù),會有我們是一家人的感覺,特別親切。

我也準備使用MongoDB來作為我的數(shù)據(jù)庫。

MongoDB使用集合(collection)和文檔(document)來描述和存儲數(shù)據(jù),collection就相當于表,document相當于行,不過MySQL之類的關(guān)系型數(shù)據(jù)庫,表結(jié)構(gòu)是固定的,比如某一行由若干列組成,行行都一樣,而MongoDB不同,一個集合里的多個文檔可以有不同的結(jié)構(gòu),更靈活一些。

安裝Mongo

詳細指南在這里(MongoDB的官方文檔):https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/。

到https://www.mongodb.org/downloads下載安裝包,Windows系統(tǒng)是msi文件,我選擇的是“Windows 64-bit 2008 R2+”這個版本。

安裝非常簡單,你可以默認,也可以選擇安裝位置,我裝到了G盤MongoDB目錄下。安裝完后,目錄結(jié)構(gòu)是這樣的:G:\MongoDB\Server\3.0\。

mongod、mongo以及其它的工具,都在3.0目錄下的bin目錄。

啟動

要使用MongoDB,需要指定一個文件夾讓它存放數(shù)據(jù),我在G:\MongoDB下建立了一個名為db的文件夾。

打開cmd,進入G:\MongoDB\Server\3.0\bin目錄,執(zhí)行“mongod –dbpath=G:\MongoDB\db”,就會啟動MongoDB,看到下面的圖:

201631161833532.jpg (672×436)

MongoDB啟動后,會監(jiān)聽在一個端口上等待客戶端來連接,從上圖可以看出,默認監(jiān)聽的端口是27017。你可以“–port”選項改變這個端口,比如“mongod –port 28018 –dbpath=G:\MongoDB\db”命令就會啟動MongoDB并監(jiān)聽28018端口。

啟動了MongoDB,我們就可以使用mongo(交互式shell)來管理數(shù)據(jù)庫了。直接在bin目錄下執(zhí)行mongo,就可以看到下圖:

201631161901110.jpg (672×333)

mongo Shell默認連接到了test數(shù)據(jù)庫,還告訴我們可以輸入help來查看幫助。你可以鍵入help并回車,看看都有哪些命令可用。

注意,mongod默認啟動時不帶鑒權(quán),客戶端連上后就可以隨便操作,建庫、增刪改查等統(tǒng)統(tǒng)可以。你要想限制用戶權(quán)限,可以自己配置下,我這里就直接往下走了。

安裝mongoose驅(qū)動

安裝GIT工具:
由于github網(wǎng)站不支持直接下載打包了所有submodule的源碼包,所以需要通過git工具來簽出所有的源碼。從http://code.google.com/p/msysgit/downloads/list,可以下載到msysgit這個Windows平臺下的git客戶端工具(最新版本文件為Git-1.7.7.1-preview20111027.exe)。在下載之后雙擊安裝。

下載NPM源碼:
打開命令行工具(CMD),執(zhí)行以下命令,可以通過msysgit簽出NPM的所有源碼和依賴代碼并安裝npm。

git clone --recursive git://github.com/isaacs/npm.git
cd npm
node cli.js install npm -gf

在執(zhí)行這段代碼之前,請確保node.exe是跟通過node.msi的方式安裝的,或者在PATH環(huán)境變量中。這段命令也會將npm加入到PATH環(huán)境變量中去,之后可以隨處執(zhí)行npm命令。如果安裝中遇到權(quán)限方面的錯誤,請確保cmd命令行工具是通過管理員身份運行的。安裝成功后,執(zhí)行以下命令:

npm install underscore

返回:

underscore@1.2.2 ./node_modules/underscore

如此,Windows平臺下的NPM安裝完畢,然后我們可以安裝mongoose

npm install mongoose 

實例
一些基礎(chǔ)的操作,說明都寫在代碼注釋里了:

// mongoose 鏈接
var mongoose = require('mongoose');
var db    = mongoose.createConnection('mongodb://127.0.0.1:27017/NodeJS'); 
// 鏈接錯誤
db.on('error', function(error) {
  console.log(error);
});
// Schema 結(jié)構(gòu)
var mongooseSchema = new mongoose.Schema({
  username : {type : String, default : '匿名用戶'},
  title  : {type : String},
  content : {type : String},
  time   : {type : Date, default: Date.now},
  age   : {type : Number}
});
// 添加 mongoose 實例方法
mongooseSchema.methods.findbyusername = function(username, callback) {
  return this.model('mongoose').find({username: username}, callback);
}
// 添加 mongoose 靜態(tài)方法,靜態(tài)方法在Model層就能使用
mongooseSchema.statics.findbytitle = function(title, callback) {
  return this.model('mongoose').find({title: title}, callback);
}
// model
var mongooseModel = db.model('mongoose', mongooseSchema);
// 增加記錄 基于 entity 操作
var doc = {username : 'emtity_demo_username', title : 'emtity_demo_title', content : 'emtity_demo_content'};
var mongooseEntity = new mongooseModel(doc);
mongooseEntity.save(function(error) {
  if(error) {
    console.log(error);
  } else {
    console.log('saved OK!');
  }
  // 關(guān)閉數(shù)據(jù)庫鏈接
  db.close();
});
// 增加記錄 基于model操作
var doc = {username : 'model_demo_username', title : 'model_demo_title', content : 'model_demo_content'};
mongooseModel.create(doc, function(error){
  if(error) {
    console.log(error);
  } else {
    console.log('save ok');
  }
  // 關(guān)閉數(shù)據(jù)庫鏈接
  db.close();
});
// 修改記錄
mongooseModel.update(conditions, update, options, callback);
var conditions = {username : 'model_demo_username'};
var update   = {$set : {age : 27, title : 'model_demo_title_update'}};
var options  = {upsert : true};
mongooseModel.update(conditions, update, options, function(error){
  if(error) {
    console.log(error);
  } else {
    console.log('update ok!');
  }
  //關(guān)閉數(shù)據(jù)庫鏈接
  db.close();
});
// 查詢
// 基于實例方法的查詢
var mongooseEntity = new mongooseModel({});
mongooseEntity.findbyusername('model_demo_username', function(error, result){
  if(error) {
    console.log(error);
  } else {
    console.log(result);
  }
  //關(guān)閉數(shù)據(jù)庫鏈接
  db.close();
});
// 基于靜態(tài)方法的查詢
mongooseModel.findbytitle('emtity_demo_title', function(error, result){
  if(error) {
    console.log(error);
  } else {
    console.log(result);
  }
  //關(guān)閉數(shù)據(jù)庫鏈接
  db.close();
});
// mongoose find
var criteria = {title : 'emtity_demo_title'}; // 查詢條件
var fields  = {title : 1, content : 1, time : 1}; // 待返回的字段
var options = {};
mongooseModel.find(criteria, fields, options, function(error, result){
  if(error) {
    console.log(error);
  } else {
    console.log(result);
  }
  //關(guān)閉數(shù)據(jù)庫鏈接
  db.close();
});
// 刪除記錄
var conditions = {username: 'emtity_demo_username'};
mongooseModel.remove(conditions, function(error){
  if(error) {
    console.log(error);
  } else {
    console.log('delete ok!');
  }

  //關(guān)閉數(shù)據(jù)庫鏈接
  db.close();
});

相關(guān)文章

  • Node.js實戰(zhàn)之Buffer和Stream模塊系統(tǒng)深入剖析詳解

    Node.js實戰(zhàn)之Buffer和Stream模塊系統(tǒng)深入剖析詳解

    這篇文章主要介紹了Node.js實戰(zhàn)之Buffer和Stream模塊系統(tǒng)深入剖析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 如何使用puppet替換文件中的string

    如何使用puppet替換文件中的string

    今天小編就為大家分享一篇關(guān)于如何使用puppet替換文件中的string,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Node server生成Swagger接口文檔步驟詳解

    Node server生成Swagger接口文檔步驟詳解

    本文介紹使用NodeJs搭建的后端server快速生成Swagger接口文檔的技巧,本文有詳細的步驟講解,通過代碼示例給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • 解決修復(fù)npm安裝全局模塊權(quán)限的問題

    解決修復(fù)npm安裝全局模塊權(quán)限的問題

    今天小編就為大家分享一篇解決修復(fù)npm安裝全局模塊權(quán)限的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • NodeJS模塊Buffer原理及使用方法解析

    NodeJS模塊Buffer原理及使用方法解析

    這篇文章主要介紹了NodeJS模塊Buffer原理及使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • node.js中的fs.truncate方法使用說明

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

    這篇文章主要介紹了node.js中的fs.truncate方法使用說明,本文介紹了fs.truncate的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node命令行工具之實現(xiàn)項目工程自動初始化的標準流程

    node命令行工具之實現(xiàn)項目工程自動初始化的標準流程

    這篇文章主要介紹了node命令行工具之實現(xiàn)項目工程自動初始化的標準流程 ,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • NodeJS多種創(chuàng)建WebSocket監(jiān)聽的方式(三種)

    NodeJS多種創(chuàng)建WebSocket監(jiān)聽的方式(三種)

    這篇文章主要介紹了NodeJS多種創(chuàng)建WebSocket監(jiān)聽的方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • node版本快速切換及管理方法

    node版本快速切換及管理方法

    這篇文章主要為大家介紹了node版本快速切換及管理方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Node.js實現(xiàn)兼容IE789的文件上傳進度條

    Node.js實現(xiàn)兼容IE789的文件上傳進度條

    這篇文章給大家介紹了如何實現(xiàn)兼容IE789的文件上傳進度條,如果你的工作用過上傳圖片或上傳大文件啥的,一般在IE低版本瀏覽器里,會切換到用flash解決,可是有些人肯定不會為了老舊IE的進度條而去學(xué)flash,那么下面來一起看看吧。
    2016-09-09

最新評論