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、创建数据库
注解:如果没有加上这句话 { 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('数据库链接失败');
return false;
}
client.close();
})
})
3、创建集合
const dbUrl = 'mongodb://127.0.0.1:7000';
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {
if (err) {
console.log('数据库链接失败');
return false;
}
var db = client.db("dbdemo");
db.createCollection('site', function (err, res) {
if (err) throw err;
console.log("创建集合!");
db.close();
});
client.close();
})
})
4、增删改查等一系列数据库操作
(1)增加数据
const dbUrl = 'mongodb://127.0.0.1:7000';
router.get('/add', function (req, res, next) {
//链接数据库,mgdemo:数据库名称;student:集合名称
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology:
true }, function (err, client) {
if (err) {
console.log('数据库链接失败');
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("增加数据成功");
client.close();
})
})
});
(2).修改数据
router.get('/edit', function (req, res) {
MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {
if (err) {
console.log("数据库链接失败");
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("数据库修改成功");
client.close();
})
})
})
(3).查询数据
注:查询数据渲染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)、删除数据
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();
})
})
})