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

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

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

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

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

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

安裝Mongo

詳細(xì)指南在這里(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è)版本。

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

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

啟動(dòng)

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

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

201631161833532.jpg (672×436)

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

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

201631161901110.jpg (672×333)

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

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

安裝mongoose驅(qū)動(dòng)

安裝GIT工具:
由于github網(wǎng)站不支持直接下載打包了所有submodule的源碼包,所以需要通過git工具來簽出所有的源碼。從http://code.google.com/p/msysgit/downloads/list,可以下載到msysgit這個(gè)Windows平臺(tái)下的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í)行這段代碼之前,請(qǐng)確保node.exe是跟通過node.msi的方式安裝的,或者在PATH環(huán)境變量中。這段命令也會(huì)將npm加入到PATH環(huán)境變量中去,之后可以隨處執(zhí)行npm命令。如果安裝中遇到權(quán)限方面的錯(cuò)誤,請(qǐng)確保cmd命令行工具是通過管理員身份運(yùn)行的。安裝成功后,執(zhí)行以下命令:

npm install underscore

返回:

underscore@1.2.2 ./node_modules/underscore

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

npm install mongoose 

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

// mongoose 鏈接
var mongoose = require('mongoose');
var db    = mongoose.createConnection('mongodb://127.0.0.1:27017/NodeJS'); 
// 鏈接錯(cuò)誤
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 實(shí)例方法
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();
});
// 查詢
// 基于實(shí)例方法的查詢
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)文章

最新評(píng)論

高安市| 精河县| 肃宁县| 津南区| 南阳市| 三穗县| 香格里拉县| 双流县| 德安县| 文成县| 柘荣县| 五华县| 连平县| 仙游县| 建阳市| 青浦区| 留坝县| 哈巴河县| 本溪市| 石嘴山市| 香格里拉县| 曲松县| 东城区| 兰考县| 柳河县| 华坪县| 晋江市| 五莲县| 札达县| 兴城市| 津市市| 溧阳市| 丰原市| 洛宁县| 于田县| 运城市| 德阳市| 镇巴县| 胶州市| 乐平市| 施秉县|