1.准备工作
文件目录:demo15
使用之前写过的类exprss路由模块
下载依赖
npm install mongodb --save-dev
官方文档:http://mongodb.github.io/node-mongodb-native/2.2/quick-start/quick-start/
2.node.js连接mongoDB基本语法
//引用依赖
var MongoClient = require('mongodb').MongoClient;
//数据库连接的地址,最后的斜杠表示数据库名字
var DBurl = 'mongodb://localhost:27017/news';
//app.get()为注册路由方法
app.get("/", function (req, res) {
//连接数据库,这是一个异步的操作
MongoClient.connect(shujukuURL, function (err, db) {
res.writeHead(200, { "Content-Type": "text/html;charset=UTF8" });
if (err) {
res.send("数据库连接失败");
return;
}
res.write("恭喜,数据库已经成功连接 \n");
db.collection("user").insertOne({ "name": "哈哈" }, function (err, result) {
if (err) {
res.send("数据库写入失败");
return;
}
res.write("恭喜,数据已经成功插入");
res.end();
//关闭数据库
db.close();
});
});
});
//在打开服务器的回调函数中执行
db.collection("user").insertOne({ "name": "哈哈" }, function (err, result) {
}
//在打开服务器的回调函数中执行
db.collection("user").deleteOne({ "name": "哈哈" }, function (err, result) {
}
//在打开服务器的回调函数中执行
db.collection("user").updataOne({ "name": "哈哈" }, function (err, result) {
}
var result = []; //存放数据库查找到的数据
var userRel = db.collection('user').find();
//遍历拿到的对象
userRel.each(function (err, doc) {
if (err) {
console.log("游标遍历错误");
return;
}
if (doc != null) {
result.push(doc); //逐条将数据放进数组中
} else {
//遍历完毕 可以渲染页面 或执行其他页面逻辑
}
});
3.使用类似express路由实现静态页面功能
项目文件:demo15
编写静态页面从数据库获取数据来实现 1.注册用户 2.用户登录 3.修改密码 4.注销账户 功能
const http = require('http');
const app = require('./router/express.js');
const ejs = require('ejs');
const url = require('url');
const MongoClient = require('mongodb').MongoClient;
var DBurl = 'mongodb://127.0.0.1:27017/user';
http.createServer(app).listen(3011);//http://127.0.0.1:3011
//编写静态页面来实现 1.注册用户 2.用户登录 3.修改密码 4.注销账户 功能
app.get('/index', (req, res) => {
MongoClient.connect(DBurl, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) {
res.send("false");
return;
}
var db = client.db("user");
db.collection("zhanghao").insertOne({ "name": "哈哈" }, function (err, result) {
client.close();
res.send('数据增加成功');
});
});
});
//注册get方式提交数据的 getlogin页面
app.get('/getlogin', (req, res) => {
ejs.renderFile('./views/getlogin.ejs', {}, (err, data) => {
res.send(data);
});
});
//注册get方式提交数据的 dologin页面
app.get('/dologin', (req, res) => {
//从登录页面中获取账户密码
var username = url.parse(req.url, "ture").query.username;
var password = url.parse(req.url, "ture").query.password;
//获取注册账号信息
var newusername = url.parse(req.url, "ture").query.newusername;
var newpassword = url.parse(req.url, "ture").query.newpassword;
if (username != null && password != null) {
//获取数据上传方式
var method = req.method.toLowerCase();
//连接服务器
MongoClient.connect(DBurl, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) {
res.send("false");
return;
}
var db = client.db("user");
//获取服务器用户数据
var userlist = [];
var finddata = db.collection('zhanghao').find({ "username": username });
finddata.each((err1, doc) => {
if (err1) {
res.send("数据查找失败");
return;
}
if (doc != null) { //每次遍历将符合条件的数据放进userlist 数组中
userlist.push(doc);
} else { // 数据查找完成
// console.log(userlist[0].username);
if (userlist[0] != null) {//存在账号 //目前对数据库没有整理 默认第一个数据为账户信息
if (password == userlist[0].password) {
res.send("登录成功");
} else {
res.send("密码错误");
}
} else {//不存在账号
res.send("不存在该用户")
}
}
});
});
}
else if (newusername != null && newpassword != null) {
MongoClient.connect(DBurl, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) {
res.send("false");
return;
}
var db = client.db("user");
//增加服务器用户数据
db.collection('zhanghao').insertOne({ "username": newusername, "password": newpassword }, (inserterr, insertdata) => {
if (inserterr) {
res.send('服务器增加数据失败');
return;
}
//注册用户成功
ejs.renderFile('./views/dologin.ejs', { password: newpassword, username: newusername, method }, (err, data) => {
res.send(data);
});
});
});
}else{
res.send("未输入完全");
}
});
// //注册post方式提交数据的 postlogin页面
// app.get('/postlogin', (req, res) => {
// ejs.renderFile('./views/postlogin.ejs', {}, (err, data) => {
// res.send(data);
// });
// });
// // //注册post方式提交数据的 dologin页面 注册了两次dologin 所有第二次 用req.on 接收不到Post传过来的数据
// app.post('/dologin', (req, res) => {
// var newdata = req.body;
// var method = req.method.toLowerCase();
// ejs.renderFile('./views/dologin.ejs', { newdata: newdata, method: method }, (err, data) => {
// res.send(data);
// });
// });