用過node的小夥伴應該都會知道mongodb,下面的是最簡單的增刪改查操做。javascript
1. app.js java
var express = require('express')
var app = express()
var db = require('./model/db.js') // 數據庫操做
// 訪問路由對應操做
app.listen(4000)複製代碼
2. module/db.js 這裏封裝了對數據庫的基本操做node
let MongoClient = require('mongodb').MongoClient;
// 封裝內部函數 鏈接數據庫
_connectDB = (callback) => {
let url = 'mongodb://localhost:27017/Model';
MongoClient.connect(url, (err,db) => {
if(err) {
callback(err,null)
db.close()
return;
}
callback(err,db)
})
}複製代碼
封裝新增數據函數mongodb
exports.insertOne = (collectionName, json, callback) => {
// 鏈接數據庫成功以後回調插入數據
_connectDB((err,db) => {
// 插入數據後回調參數 再傳遞迴給形參
db.collection(collectionName).insertOne(json, (err, result) => {
callback(err, result)
// 每次操做完畢記得關閉數據庫
db.close()
})
})
}
複製代碼
封裝刪除數據函數數據庫
exports.deleteMany = (collectionName,json,callback) => {
_connectDB((err,db) => {
// 選擇集合 刪除具體的一條數據
db.collection(collectionName).deleteMany(
json,
(err,results) => {
callback(err,result);
db.close()
})
})
}複製代碼
封裝修改數據函數express
exports.updateMany = (collectionName, json1, json2, callback) => {
// 選擇具體集合 json1: 要修改的舊數據 json2: 修改爲什麼樣
_connectDB((err,db) => {
json1,
json2,
(err,result) => {
callback(err, results)
db.close()
}
})
}複製代碼
最後的就查找數據函數json
exports.find = (collectionName,json,C,D) => {
// 列表名稱 查找條件 分頁查詢 回調函數
let result = []
// 不傳第三個參數的時候,默認查詢所有 若是所有參數都傳了,就按照條件查詢
if(arguments.length == 3) {
let callback = C
let skipnumber = 0
let limit = 0
} else if(arguments.length == 4){
let callback = D
let args = C
// 忽略數量 = 每頁顯示多少條 * 當前頁數
let skipnumber = args.pageamount * args.page || 0
let limit = args.pageamount || 0 // 數目限制顯示多少條
let sort = args.sort || {} // 排序方式
} else {
throw new Error('find函數的參數個數,必須是三個或者四個')
return;
}
_connectDB((err,db) => {
// 建立新遊標
let cursor = db.collection(collactionName).find(json).skip(skipnumber).limit(limit).sort(sort);
cursor.each((err,doc) => {
if(err) {
callback(err,null)
db.close()
return;
}
// 判斷 doc 是否有效 無效的話就是遍歷結束了 那就返回查詢到的所有數據
if(doc != null) {
result.push(doc)
} else {
callback(null,result)
db.close()
}
})
})
}複製代碼
3. app.js 完善邏輯bash
app.get("/", (req,res) => {
// 每訪問一次這個頁面 就在 Model 數據庫下的 student 集合下新增一條數據
db.insertOne("student", {"name": "小白"}, (err, result) => {
if(err) {
consoel.log('插入失敗')
return;
}
res.send('插入數據成功')
})
})
app.get("/read", (err, res) => {
// 這個頁面接收地址欄接收一個 page 參數
let page = parseInt(req.query.page)
// json爲空默認查找所有
db.find("student",{},{"pageamount": 3, "page": page},(err,result) => {
res.send(result)
})
})
app.get("/delete", (err, res) => {
let _name = req.query.name
// 根據接收到 name 刪除對應的數據
db.deleteMany("student", {"name": _name},(err, result) => {
if(err) {
console.log(err)
}
res.send(reult)
})
})
app.get("/update", (req,res) => {
// 三個參數 => 集合 要修改的 修改爲
db.updateMany(
"student",
{"name": "小白"},
{$set: {name: "大白"}}
(err,result) => {
if(err) {
console.log(res)
}
res.send(result);
})
})
複製代碼
4. 啓動數據庫 好比個人數據庫文件夾在Mondodbapp
mongod --dbpath G:\js\Nodejs\code\Mongodb複製代碼
5. 再新開一個cmd 對數據庫進行查看函數
mongo.exe // 進入mongodb環境
show dbs // 查看所有數據庫
use Model // 使用Model數據庫
show collections // 查看Model數據庫的所有集合
db.student.find() // 查看student集合的數據,在訪問頁面後就會數據就會寫入這個集合
複製代碼