1. 程式人生 > >詳解node + mongoDb(mongoDb安裝、執行,在node中連線、增刪改查)

詳解node + mongoDb(mongoDb安裝、執行,在node中連線、增刪改查)

一、序言

  好久沒寫部落格了,這次主要聊聊 node 和 mongoDb 。 先說明一下技術棧  node + express + mongoose + mongoDb。這篇部落格,主要講述 mongoDb 的下載 、安裝 、 配置 、 執行 以及如何在 node 專案中引入 mongoose 並 連結 mongoDb 操作資料庫,最後再附帶幾個簡單 建立 資料庫、集合、域的例項。

 

二、目錄

  1、 下載、安裝 mongoDb

  2、 配置、執行 mongoDb

  3、 node專案中 連結 mongoDb

  4、 node專案中對 mongoDb 實現 資料庫 集合 域的建立、編輯等操作

 

三、下載、安裝 mongoDb

官方下載連結: https://www.mongodb.com/download-center#community
下載 Windows 64-bit x64 msi 格式的,完事直接傻瓜式安裝。或者你也可以選擇 customs 自定義安裝,去選擇一些路徑啥的

四、配置、執行 mongoDb

在任意沒有中文的目錄下新建資料夾,如c:\data,在資料夾下存放MongoDB資料庫檔案與日誌檔案,如:   ps: 當然你也可以不配置


  c:\dbData\db用於存放mongodb的資料檔案

  c:\dbData\log用於存放mongodb的日誌檔案
 
建立配置檔案

  開啟MongoDB的安裝目錄如“C:\Program Files\MongoDB\Server\4\bin”,並在此目錄下新建一個mongo.config檔案,檔案內容如下:
##資料庫目錄##
dbpath=C:\dbData\db

##日誌輸出檔案##
logpath=C:\dbData\log\db.log

  在當前目錄下,即 bin 目錄下 開啟命令列  輸入 mongod --config "C:\Program Files\MongoDB\Server\4\bin\mongo.config" --install   回車

 

新增環境變數

  在計算機->屬性->高階設定->環境變數->系統變數->Path 中加入"C:\Program Files\MongoDB\Server\4\bin"路徑。

  然後在 bin 目錄下  雙擊  mongo.exe 啟動 MongoDB 服務 

 

然後命令列 net start mongodb 就OK了

 

五、node專案中 連結 mongoDb

  比較簡單,程式碼如下:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/mongodb');
mongoose.connection.on('connected', function(e) {
  console.log('connect success');
});
mongoose.connection.on('error', function(err) {
  console.error('MongoDB connection error: ' + err);
  process.exit(1);
});
mongoose.Promise = Promise;

  直接connect最簡單的連結, MONGODB://IP:埠號/資料庫名稱, 注意格式和位置,mongoose 會判斷,有這個資料庫會直接連線,沒有的話,會建立,再連線。connection.on 繫結上連線成功/失敗的回撥函式,直觀的的告訴我們有沒有連線成功。如果失敗,檢查IP和埠號,再檢查MongoDB服務是否真的啟動了。

  connect引數很多,一般專案中還是需要配置一下的,這個根據大傢俱體專案來配置了。比如:

module.exports = {
  production: {
    uri: 'mongodb://localhost/db',
    option: {
      autoIndex: true, 
      reconnectTries: Number.MAX_VALUE, 
      reconnectInterval: 1000, 
      poolSize: 10, 
      bufferMaxEntries: 0
    },
  },
development: {
    uri: 'mongodb://localhost/db-dev',
    option: {
      autoIndex: true, 
      reconnectTries: Number.MAX_VALUE, 
      reconnectInterval: 1000, 
      poolSize: 10, 
      bufferMaxEntries: 0
    },
  },
test: {
    uri: 'mongodb://localhost/db-test',
    option: {
      autoIndex: true, 
      reconnectTries: Number.MAX_VALUE, 
      reconnectInterval: 1000, 
      poolSize: 10, 
      bufferMaxEntries: 0
    },
  }}[process.env.NODE_ENV || 'development']

 

這樣就連線好了。

 

 

六、node專案中對 mongoDb 實現 資料庫 集合 域的建立等操作

  以上步驟我們就已經成功安裝了MongoDB,並在node專案中成功連線 MongoDB 了,而且 mongodb://localhost/db   這個db就是你的資料庫名稱,在連結的時候,就已經將資料庫建好了,接下來是對集合和域的建立。

      

直接舉個例子:

  新建一個 MongoDB 的集合

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ObjectId = Schema.ObjectId;

const schema = new Schema({
  name: { type: String, default: '' }, // 資料名稱
  data: { type: String, default: '' }, //  資料內容
  createTime: { type: Date, default: Date.now },
})

module.exports = mongoose.model('SaveDate', schema);

   寫 api 對集合進行操作

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const SaveDate = require('../../models/saveDate.mongo')

router.post('/test/saveData', async (req, res, next) => { const body = req.body; try { if (!body.name){ res.status(400).json({ msg: 'name is required' }); }else if (!body.data){ res.status(400).json({ msg: 'data is required' }); }else { const saveDate = await SaveDate.create({ name: body.name, data: JSON.stringify(body.data) }); res.json({ status: true, saveDate, }); } }catch (e) { console.log(e) res.status(500).json({ status: false, error: e, }); } });

   

 mongoose.model   Mongoose建立集合指令,他的引數是集合名稱,以及一個Schema。將Schem對映到當前新建的集合中。也就是我們所謂的建立表啦。
 mongoose.Schema  Mongoose建立資料Schema指令,存放資料、定義資料型別。這個就是我們在sql裡面 定義表中欄位

通過這2步,就算新建好一個集合了,但是現在他是沒資料的,接下來需要對集合進行 增刪改查 的操作。
//集合中新增資料
const saveDate = await SaveDate.create({
name: body.name,
data: JSON.stringify(body.data)
});
// 查詢集合的資料
const list = await SaveDate.find(condition).skip(pageSize * (current - 1)).limit(pageSize);
// 更新集合資料
await Instruction.update({ _id: body._id }, {
$set: set
});
// 刪除集合資料
await Instruction.remove({ _id: body._id });
 
以上是最基礎的 增、刪、改、查 指令,至於更加詳細的 Mongoose 指令,這裡就不詳說了。根據你的需要現在已經實現最基礎的操作資料庫操作了。



七、 小結

這一套 node + express + Mongoose + MongoDB 技術棧,當中對 資料庫 的操作部分就到此結束了。下面稍微總結一下,流程大致如下:

    首先下載、安裝、配置、啟動 MongoDB 服務
     然後,執行node服務,並在程式碼中配置、連線MongoDB服務
     最後,在 api 中,對集合進行操作

注: 差點忘記了,最後給大家安利一個 MongoDB 的桌面化軟體,簡單實用,官方下載連結: https://robomongo.org/download
資料庫還是有視覺化工具方便。

  這篇部落格講的不深,主要是給初學者提供一個學習 node + MongoDB 自己搭建api服務的學習方向。我剛開始接觸到時候沒少走彎路。希望這篇文章能幫到大家。
  
博主熱衷於向大家推送前端入門知識,喜歡的童鞋可以關注一下! ps:還有其他不錯的部落格,希望大家有好的程式碼我們可以一起討論。