您的位置:首页 > 数据库 > Mongodb

node.js学习笔记--node.js连接并使用mongoDB(4)

2020-03-05 07:56 1006 查看

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';
  1. 使用
//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();
});
});
});
  1. 增加数据
//在打开服务器的回调函数中执行
db.collection("user").insertOne({ "name": "哈哈" }, function (err, result) {

}
  1. 删除数据
//在打开服务器的回调函数中执行
db.collection("user").deleteOne({ "name": "哈哈" }, function (err, result) {

}
  1. 修改数据
//在打开服务器的回调函数中执行
db.collection("user").updataOne({ "name": "哈哈" }, function (err, result) {

}
  1. 查找数据
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);
//     });

// });
  • 点赞
  • 收藏
  • 分享
  • 文章举报
qq_36752532 发布了7 篇原创文章 · 获赞 0 · 访问量 69 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: