node.js+mongodb資料庫 搭建後臺
阿新 • • 發佈:2018-11-13
首先下載資料庫
連結: https://pan.baidu.com/s/1lw_qal0vcvGm3wiJC-F9xQ 提取碼: ctj5 這裡我提供一下我百度網盤的資料庫安裝包
- 建立一個資料夾mymongodb,這裡為mongodb資料庫的安裝位置。
- 在此資料夾下建立data資料夾 用來存放資料
- 開啟bin資料夾 開啟終端 輸入 mongod --dbpath E:\mongodb\data 就會啟動資料庫
資料庫啟動成功後我們需要安裝一個數據庫視覺化工具
視覺化工具是為了便於管理資料庫,根據個人喜好自行安裝就行
此時開始搭建node服務
上文中已經提到了怎麼搭建node服務,現在來介紹如何連線資料庫
在server.js資料夾中這樣寫
var express = require('express'); var app = express(); //設定跨域訪問 app.use(function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild'); res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); if (req.method == 'OPTIONS') { res.send(200); /*讓options請求快速返回*/ } else { next(); } })
此時有個處理跨域的方法,否則會報跨域的錯誤
連線資料庫,下面連線的是資料庫的預設庫,也可以自己建myList名字的庫
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/runoob";
好接下來開始寫介面,對資料庫的增刪改查
獲取列表:
// 獲取資訊列表 app.get('/shujutongji', function (req, res) { var data = []; MongoClient.connect(url, function (err, db) { if (err) throw err; var dbo = db.db("runoob"); // var whereStr = {"name":'小明'}; // 查詢條件 dbo.collection("CarList").find().toArray(function (err, result) { // 返回集合中所有資料 if (err) throw err; res.send(result); db.close(); }) }); });
增加資料
function successDate(msg, code,obj) {
const successData = {
code: code,
msg: msg,
data:obj
}
return successData
}
// 新增資訊列表
app.get('/addPreson', function (req, resp) {
// var url = req.url;
var obj = {
name: req.query.name,
age: req.query.age,
sex: req.query.sex,
address: req.query.address,
height: req.query.height,
};
var flag = true
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection("site").find().toArray(function (err, result) { // 返回集合中所有資料
if (err) throw err;
result.map((item, index) => {
if (obj.name == item.name) {
flag = false
console.log(flag)
}
})
if (flag) {
console.log(flag + 'sss')
dbo.collection("site").insertOne(obj, function (err, res) {
if (err) throw err;
console.log("文件插入成功");
resp.send(successDate('新增成功', 200))
db.close();
});
} else {
resp.send(successDate('不能新增同名資訊', 400))
}
db.close();
})
});
});
刪
//刪除某條資訊
app.get('/delete', function (req, resp) {
// var url = req.url;
var obj = {
name: req.query.name
};
console.log(obj)
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection("site").deleteOne(obj, function (err, obj) {
if (err) throw err;
console.log("文件刪除成功");
resp.send(successDate('刪除成功', 200))
db.close();
});
});
});
改
//更改密碼
app.get('/changepwd', function (req, resp) {
// var url = req.url;
var user = {'userName':req.query.username}
var upPwd = {$set:{'passWord':req.query.pwd}}
console.log(user)
console.log(upPwd)
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection("userData").updateOne(user,upPwd, function (err, obj) {
if (err) throw err;
console.log("密碼修改成功");
resp.send(successDate('密碼修改成功', 200))
db.close();
});
});
});
post請求寫法,這裡以登入介面作為例子
//輸後臺接收賬號密碼進行判斷,並返回資料
app.post("/login", function (req, resq) {
//定義一個空字串
var query = '';
req.addListener("data", function (d) {
query += d;
// console.log(d);
})
var flag = true
//如果資料接收完畢
req.addListener('end', function () {
// 將字串解析為物件
var params = require('querystring').parse(query);
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var whereStr = params // 查詢條件
dbo.collection("userData").find().toArray(function (err, result) { // 返回集合中所有資料
if (err) throw err;
result.map((item, index) => {
if (params.userName == item.userName && params.pwd == item.passWord) {
var obj = item
resq.send(successDate('登入成功', 200,obj));
flag = false
}
})
if (flag) {
resq.send(successDate('使用者名稱不存在', 400));
}
db.close();
})
});
})
});
在貼上完整的server.js例子
var express = require('express');
var app = express();
//設定跨域訪問
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
if (req.method == 'OPTIONS') {
res.send(200); /*讓options請求快速返回*/
} else {
next();
}
})
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/runoob";
// 獲取資訊列表
app.get('/shujutongji', function (req, res) {
var data = [];
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
// var whereStr = {"name":'菜鳥教程'}; // 查詢條件
dbo.collection("CarList").find().toArray(function (err, result) { // 返回集合中所有資料
if (err) throw err;
res.send(result);
db.close();
})
});
});
// 獲取身份資訊列表
app.get('/preson', function (req, res) {
var data = [];
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
// var whereStr = {"name":'菜鳥教程'}; // 查詢條件
dbo.collection("site").find().toArray(function (err, result) { // 返回集合中所有資料
if (err) throw err;
res.send(result);
db.close();
})
});
});
// 獲取城市列表
app.get('/cityList', function (req, res) {
var data = [];
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
// var whereStr = {"name":'菜鳥教程'}; // 查詢條件
dbo.collection("cityList").find().toArray(function (err, result) { // 返回集合中所有資料
if (err) throw err;
res.send(result);
db.close();
})
});
});
function successDate(msg, code,obj) {
const successData = {
code: code,
msg: msg,
data:obj
}
return successData
}
// 新增資訊列表
app.get('/addPreson', function (req, resp) {
// var url = req.url;
var obj = {
name: req.query.name,
age: req.query.age,
sex: req.query.sex,
address: req.query.address,
height: req.query.height,
};
var flag = true
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection("site").find().toArray(function (err, result) { // 返回集合中所有資料
if (err) throw err;
result.map((item, index) => {
if (obj.name == item.name) {
flag = false
console.log(flag)
}
})
if (flag) {
console.log(flag + 'sss')
dbo.collection("site").insertOne(obj, function (err, res) {
if (err) throw err;
console.log("文件插入成功");
resp.send(successDate('新增成功', 200))
db.close();
});
} else {
resp.send(successDate('不能新增同名資訊', 400))
}
db.close();
})
});
});
//刪除某條資訊
app.get('/delete', function (req, resp) {
// var url = req.url;
var obj = {
name: req.query.name
};
console.log(obj)
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection("site").deleteOne(obj, function (err, obj) {
if (err) throw err;
console.log("文件刪除成功");
resp.send(successDate('刪除成功', 200))
db.close();
});
});
});
//更改密碼
app.get('/changepwd', function (req, resp) {
// var url = req.url;
var user = {'userName':req.query.username}
var upPwd = {$set:{'passWord':req.query.pwd}}
console.log(user)
console.log(upPwd)
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
dbo.collection("userData").updateOne(user,upPwd, function (err, obj) {
if (err) throw err;
console.log("密碼修改成功");
resp.send(successDate('密碼修改成功', 200))
db.close();
});
});
});
//登入視窗處理
//輸後臺接收賬號密碼進行判斷,並返回資料
app.post("/login", function (req, resq) {
//定義一個空字串
var query = '';
req.addListener("data", function (d) {
query += d;
// console.log(d);
})
var flag = true
//如果資料接收完畢
req.addListener('end', function () {
// 將字串解析為物件
var params = require('querystring').parse(query);
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("runoob");
var whereStr = params // 查詢條件
dbo.collection("userData").find().toArray(function (err, result) { // 返回集合中所有資料
if (err) throw err;
result.map((item, index) => {
if (params.userName == item.userName && params.pwd == item.passWord) {
var obj = item
resq.send(successDate('登入成功', 200,obj));
flag = false
}
})
if (flag) {
resq.send(successDate('使用者名稱不存在', 400));
}
db.close();
})
});
})
});
// app.get("*", function(req, res) {
// res.sendFile(`${__dirname}/view${req.url}`);
// })
app.listen(8889, 'localhost', function() {
console.log('伺服器開啟成功');
})