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';
- 使用
//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); // }); // });
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- node.js 学习笔记五:连接mongodb
- node.js学习笔记(4)_极客学院_MongoDB的使用
- [MongoDB学习笔记-02] Node.js连接MongoDB的两种方法
- node.js学习笔记(5)--MongoDB下载及安装
- NodeJS学习系列课程笔记(NodeJs EventEmitter相关使用方法)
- 从零开始学习Node.js例子八 使用SQLite3和MongoDB
- NodeJS学习系列课程笔记(NodeJs Stream 的相关使用方法)
- node.js学习笔记(5)_极客学院_Redis的使用
- CoAP学习笔记——nodeJS node-coap安装和使用(Linux平台)
- node.js学习笔记之使用文件流
- node.js学习第3天,mongos 连接MongoDB
- 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(三)
- 使用nodejs mongodb连接mongodb的shard分布服务
- CoAP学习笔记——nodeJS node-coap安装和使用(windows平台)
- node.js 学习笔记003 :使用superagent和cheerio实现简单网页爬虫
- node.js学习笔记(4)--使用Express完成简单的登陆
- 【Node.js学习笔记】使用Gulp项目自动化构建工具
- 【收藏学习笔记】使用supervisor提高node.js调试效率
- node.js学习笔记——练习使用mysql
- node.js学习笔记之babel使用