• node13---node使用mongodb


    01.js

    /**
     *最先的后台语言是Asp(微软的),
     */
    var express = require("express");
    //数据库引用
    var MongoClient = require('mongodb').MongoClient;
    var assert = require('assert');//调试用的:assert.equal(null,err);出错停止执行下面语句
    
    var app = express();
    
    //数据库连接的地址,最后的斜杠表示数据库名字,数据库不存在会创建
    var shujukuURL = 'mongodb://localhost:27017/itcast';
    
    app.get("/",function(req,res){
        //连接数据库,这是一个异步的操作
        MongoClient.connect(shujukuURL, function(err, db) {
            if(err){
                res.send("数据库连接失败");
                return;
            }
            res.write("恭喜,数据库已经成功连接 
    ");
            db.collection("teacher").insertOne({"name":"哈哈"},function(err,result){
                if(err){
                    res.send("数据库写入失败");
                    return;
                }
                res.write("恭喜,数据已经成功插入");
                res.end();
                //关闭数据库
                db.close();
            });
        });
    });
    
    app.listen(3000);

    02.js

    /**
     * Created by Danny on 2015/9/23 17:24.
     */
    var express = require("express");
    var MongoClient = require('mongodb').MongoClient;
    var assert = require('assert');
    
    var app = express();
    
    app.set("view engine","ejs");
    
    //数据库连接的地址,最后的斜杠表示数据库名字
    var shujukuURL = 'mongodb://localhost:27017/itcast';
    
    app.get("/",function(req,res){
        //先连接数据库,对数据库的所有操作,都要写在他的回调函数里面。
        MongoClient.connect(shujukuURL, function(err, db) {
            if(err){
                //res.write("数据库连接失败");
                return;
            }
            //res.write("恭喜,数据库已经成功连接 
    ");
            //查询数据库,cursor游标,游标可以用each方法遍历
            //每次表示一条document
            var result = [];
            var cursor = db.collection('teacher').find( );
            cursor.each(function(err, doc) {
                if(err){
                    //res.write("游标遍历错误");
                    return;
                }
                if (doc != null) {
                    result.push(doc);
                } else {
                    //console.log(result);
                    //遍历完毕
                    db.close();
                    res.render("index",{
                        "result" : result
                    });
                }
            });
        });
    });
    
    app.get("/add",function(req,res){
        res.render("add");//add页面
    });
    
    app.get("/tijiao",function(req,res){
    
        //得到参数
        var name = req.query.name;
        var age = req.query.age;
        var yuwenchengji = req.query.yuwenchengji;
        var shuxuechengji = req.query.shuxuechengji;
    
        MongoClient.connect(shujukuURL, function(err, db) {
            if(err){
                console.log("数据库连接失败");
                return;
            }
    
            db.collection("teacher").insertOne({
                "name" : name,
                "age" : age,
                "score" : {
                    "shuxue" : shuxuechengji,
                    "yuwen" : yuwenchengji
                }
            },function(err,result){
                if(err){
                    console.log("数据库写入失败");
                    return;
                }
                res.send("恭喜,数据已经成功插入");
                res.end();
                //关闭数据库
                db.close();
            });
        });
    });
    
    app.listen(3000);

    03.js

    var express = require("express");
    var app = express();
    var MongoClient = require('mongodb').MongoClient;
    
    
    app.get("/",function(req,res){
        //url就是数据库的地址。/表示数据库
        //假如数据库不存在,没有关系,程序会帮你自动创建一个数据库
        var url = 'mongodb://localhost:27017/haha';
        //连接数据库,每个用户请求来就打开数据库最后又关闭数据库(php也是每次打开数据库后关闭数据库)
        MongoClient.connect(url, function(err, db) {
            //回调函数表示连接成功做的事情,db参数就是连接上的数据库实体
            if(err){
                console.log("数据库连接失败");
                return;
            }
            console.log("数据库连接成功");
            //插入数据,集合如果不存在,也没有关系,程序会帮你创建
            db.collection('student').insertOne({//生成的id前几位是时间戳后面是机器码,全球唯一
                "name" : "哈哈",
                "age" : parseInt(Math.random() * 100 + 10)
            }, function(err, result) {
                if(err){
                    console.log("插入失败");
                    return;
                }
                //插入之后做的事情,result表示插入结果。
                //console.log(result);
                res.send(result);
                db.close();
            });
        });
    });
    
    app.listen(3000);

     分页:

    一、数据库
    分页,想想我们的百度百家Ajax案例,当时调用了百度的JSON,有一个参数叫做page=3,生成的JSON不一样。
    这个就是分页,就是我们想寻找所有的新闻,但是是位于第3页的新闻。那么有两种做法:
    1) 错误的做法: 就是讲所有的result都读取到数组,然后进行数据操作,进行分页;
    2) 正确的做法: 就是真的在数据库中,只读取这么多内容。
    
    错误的,我们试图每次都读取全部数据,但是这样开销很大。
    1    var a = [];
    2    db.find("student",{},function(err,result){
    3        for(var i = 10 * page ; i < 10 * (page + 1) ; i++){
    4            a.push(result[i]);
    5        }
    6        res.send(a);
    7    });
    
    所以,mongodb提供了傻傻的两个函数。
    limit():读取的条数, skip():跳过多少条
    加入,第一页是page=0。每页10条,所以当前页的查询语句
    1db.student.find({}).limit(10).skip(page*10)
    数据总数怎么得到?
    shell中
    1db.student.stats().count;
  • 相关阅读:
    在 vue cli3 的项目中配置双服务,模拟 ajax 分页请求
    vue 外部字体图标使用,无须绝对路径引入办法
    json-sever 配置与应用
    使用 phpstudy 搭建本地测试环境
    自调用匿名函数(匿名闭包)解析与调用
    bootstrap-treeview 在 bootstrap 4 不兼容解决办法及使用
    SCSS 在项目中的运用
    题目1020:最小长方形(排除原点)
    题目1018:统计同成绩学生人数(数组或者map)
    大话比特币病毒
  • 原文地址:https://www.cnblogs.com/yaowen/p/7043368.html
Copyright © 2020-2023  润新知