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

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);
//     });

// });

你可能感兴趣的:(node.js)