1、序言前端
很久沒寫博客了,此次主要聊聊 node 和 mongoDb 。 先說明一下技術棧 node + express + mongoose + mongoDb。這篇博客,主要講述 mongoDb 的下載 、安裝 、 配置 、 運行 以及如何在 node 項目中引入 mongoose 並 連接 mongoDb 操做數據庫,最後再附帶幾個簡單 建立 數據庫、集合、域的實例。node
2、目錄sql
一、 下載、安裝 mongoDbmongodb
二、 配置、運行 mongoDb數據庫
三、 node項目中 連接 mongoDbexpress
四、 node項目中對 mongoDb 實現 數據庫 集合 域的建立、編輯等操做json
3、下載、安裝 mongoDbapi
官方下載連接: https://www.mongodb.com/download-center#community
下載 Windows 64-bit x64 msi 格式的,完事直接傻瓜式安裝。或者你也能夠選擇 customs 自定義安裝,去選擇一些路徑啥的
4、配置、運行 mongoDbasync
在任意沒有中文的目錄下新建文件夾,如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 回車mongoose
添加環境變量
在計算機->屬性->高級設置->環境變量->系統變量->Path 中加入"C:\Program Files\MongoDB\Server\4\bin"路徑。
而後在 bin 目錄下 雙擊 mongo.exe 啓動 MongoDB 服務
而後命令行 net start mongodb 就OK了
5、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']
這樣就鏈接好了。
6、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 指令,這裏就不詳說了。根據你的須要如今已經實現最基礎的操做數據庫操做了。
7、 小結
這一套 node + express + Mongoose + MongoDB 技術棧,當中對 數據庫 的操做部分就到此結束了。下面稍微總結一下,流程大體以下:
首先下載、安裝、配置、啓動 MongoDB 服務
而後,運行node服務,並在代碼中配置、鏈接MongoDB服務
最後,在 api 中,對集合進行操做
注: 差點忘記了,最後給你們安利一個 MongoDB 的桌面化軟件,簡單實用,官方下載連接: https://robomongo.org/download
數據庫仍是有可視化工具方便。
這篇博客講的不深,主要是給初學者提供一個學習 node + MongoDB 本身搭建api服務的學習方向。我剛開始接觸到時候沒少走彎路。但願這篇文章能幫到你們。
博主熱衷於向你們推送前端入門知識,喜歡的童鞋能夠關注一下! ps:還有其餘不錯的博客,但願你們有好的代碼咱們能夠一塊兒討論。