1、引入模塊
注:我這個是用了express框架來寫的一個demo
var express = require('express');
var router = express.Router();
var http = require('http');
var ejs = require('ejs');
const MongoClient = require('mongodb').MongoClient;
var url = require('url');
2、創(chuàng)建數(shù)據(jù)庫
注解:如果沒有加上這句話 { useNewUrlParser: true, useUnifiedTopology: true }苦锨,就會報下面警告
圖一
const dbUrl = 'mongodb://127.0.0.1:7000';
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {
if (err) {
console.log('數(shù)據(jù)庫鏈接失敗');
return false;
}
client.close();
})
})
3、創(chuàng)建集合
const dbUrl = 'mongodb://127.0.0.1:7000';
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {
if (err) {
console.log('數(shù)據(jù)庫鏈接失敗');
return false;
}
var db = client.db("dbdemo");
db.createCollection('site', function (err, res) {
if (err) throw err;
console.log("創(chuàng)建集合!");
db.close();
});
client.close();
})
})
4趴泌、增刪改查等一系列數(shù)據(jù)庫操作
(1)增加數(shù)據(jù)
const dbUrl = 'mongodb://127.0.0.1:7000';
router.get('/add', function (req, res, next) {
//鏈接數(shù)據(jù)庫舟舒,mgdemo:數(shù)據(jù)庫名稱;student:集合名稱
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology:
true }, function (err, client) {
if (err) {
console.log('數(shù)據(jù)庫鏈接失敗');
return false;
}
var db = client.db("dbdemo");
var mgobj = { name: "amy", age: 29 };
db.collection("site").insertOne(mgobj, function (err, result) {
if (err) {throw err;}
res.send("增加數(shù)據(jù)成功");
client.close();
})
})
});
(2).修改數(shù)據(jù)
router.get('/edit', function (req, res) {
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {
if (err) {
console.log("數(shù)據(jù)庫鏈接失敗");
return false;
}
var db = client.db("mgdemo");
db.collection("student").updateOne({ name: "zhangsan" }, { $set: { age: 90 } }, function (err, result) {
if (err) throw err;
res.send("數(shù)據(jù)庫修改成功");
client.close();
})
})
})
(3).查詢數(shù)據(jù)
注:查詢數(shù)據(jù)渲染ejs模版有兩種方式
1嗜憔、 res.render('index', { 'list': list, title: '這是一個ejs的后臺模板引擎' })
2秃励、 ejs.renderFile('views/index.ejs', { 'list': list, title: '這是一個ejs的后臺模板引擎' }, (err, result) => res.send(result);})
圖二
router.get('/', function (req, res) {
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) throw err;
let db = client.db("dbdemo");
let userRel = db.collection("site").find();
let list = [];
userRel.each((error, col) => {
if (error) throw error;
if (col != null) {
list.push(col);
} else {
// ejs渲染模版
// res.render('index', { 'list': list, title: '這是一個ejs的后臺模板引擎' })
ejs.renderFile('views/index.ejs', { 'list': list, title: '這是一個ejs的后臺模板引擎' }, (err, result) => {
res.send(result);
})
}
client.close();
})
})
})
(4)、刪除數(shù)據(jù)
router.get('/delete', function (req, res, next) {
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) throw err;
var db = client.db("dbdemo");
let query = url.parse(req.url, true).query;
db.collection('site').deleteOne(query, (error, result) => {
if (error) throw error;
res.send('刪除成功');
client.close();
})
})
})