连接数据库

149 阅读8分钟
  1. 连接数据库
  • 需要借助一个第三方包,mongoose
  • 下载
    • 安装命令: npm i mongoose(右击package.json文件在终端中打开下载)
  • 导入
    • const mongoose = require('mongoose')
  • 按照'说明书'使用
    • 1.数据库建立连接
      • mongoose.connect('数据库的地址', '回调函数,连接成功后会触发')
    • 2.创建一个'遥控器',这个遥控器可以帮我们简单的实现'增删改查'
      • 创建一个表模型(创建的内容是表头)
        • const users = new mongoose.Schema('传递一些数据内容')
      • 利用表模型,创建我们所需要的"遥控器"
        • const UsersModel = mongoose.model('表名', '需要使用的表模型(就是表头)')
      1. 利用刚才创建的'遥控器'进行'增删改查'
      • 3.1 增(存储一条数据)
        • 语法: new 遥控器({你要存储的内容}).save(); 当前方法其实也是基于promise书写的一个方法
      • 3.2 数据库的查询语法
        • 3.2.1 基本语法
          • 语法: 遥控器.find().then((res) =>console.log(res))
          • 结果: 查询该表内的所有数据,以数组的的形式返回
        • 3.2.2 条件查询
          • 语法: 遥控器.find({条件}).then((res) =>console.log(res))
          • 结果: 查询该表内所有的 符合条件 的数据
        • 3.2.3 分页查询
          • 语法: 遥控器.find({条件}).skip(数字).limit(数字).then((res) =>console.log(res))
            • (skip(m)跳过m条数据,limit(n)限制查询数量),就是从m开始查询,查询到n条数据
          • 结果: 查询该表内所有的 符合条件 的数据
        • 3.2.4 根据ID查询
          • 语法: 遥控器.findById('id号').then((res) =>console.log(res))
      • 3.3 数据库的修改语法
        • 3.3.1 修改单一数据
          • 语法: 遥控器.updateOne().then((res) =>console.log(res))
        • 3.3.2 批量修改数据
          • 语法: 遥控器.updateMany().then((res) =>console.log(res))
      • 3.4 数据库的删除语法
        • 3.4.1 删除一个数据
          • 语法: 遥控器.deleteOne().then((res) =>console.log(res))
        • 3.4.2 删除多个数据
          • 语法: 遥控器.deleteMany().then((res) =>console.log(res))
  • 引用 跨域 文档中的中的02.cors文档中的文件,在文件中新建一个连接数据库.js文件

连接数据库增加数据的代码如下:

    // 导入
    const mongoose = require('mongoose')
    // 按照'说明书'使用
    // 1.数据库建立连接
    // mongoose.connect('数据库的地址', '回调函数,连接成功后会触发')
    mongoose.connect('mongodb://localhost:27017/test2218', () => {
      /**
       * mongodb://localhost:27017/test2218
       *    数据库的默认地址: mongodb://localhost:27017
       * /test2218是让我们进入到数据库这个路径内,如果有直接进入
       *  如果没有这个路径,那么会创建一个出来,然后进入到这个路径内
       * */ 
      console.log('数据库连接成功')
    })

    // 2. 创建一个'遥控器',这个遥控器可以帮我们简单的实现'增删改查'
    /**
     * 创建一个表模型(创建的内容是表头)
     * */ 
    // const users = new mongoose.Schema('传递一些数据内容')
    const Users = new mongoose.Schema({
      nickname: String, //表示该表里,有一个字段叫做nickname,类型为字符串类型
      age: Number, //类型为数字类型
      username: {
        type: String,
        default: '用户账号' //类型为字符串类型,有一个默认值为'default'
      },
      createTime: {
        type: Date,
        default: new Date() //类型为事件类型,有一个默认值
      },
      password: {
        type: String,
        require: true, //类型为字符串类型,当前项为必填项
      },
      hobby: Array, //类型为数组类型
      gender: {
        type: String,
        enum: ['男', '女', '保密'] //类型为字符串类型, 但是值只能从当前数组中出现
      }
    })

    /**
     * 利用表模型,创建我们所需要的"遥控器"
     * */ 
    // const UsersModel = mongoose.model('表名', '需要使用的表模型(就是表头)')
    const UsersModel = mongoose.model('users', Users)
    // 3. 利用刚才创建的'遥控器'进行'增删改查'
    /***
     * 3.1 增(存储一条数据)
     *    语法: new 遥控器({你要存储的内容}).save()
     * 
     *    当前方法其实也是基于promise书写的一个方法
     * */ 
    new UsersModel({
      nickname: '超级管理员',
      age: 18,
      username: 'admin',
      password: '123456',
      // hobby: ['足球', '篮球', '乒乓球'],
      hobby: '我是故意传递的内容',
      gender: '保密'
    })
      .save()
      .then((res) => {
        console.log('当前数据存储成功', res)
      })
      .catch((err) => {
        console.log('当前数据存储失败', err)
      })
  • 注: 在终端中运行 node 文件名
  • 运行结果: image.png

修改连接数据库增加数据的代码如下

    const mongoose = require("mongoose");

    // 按照 说明书 使用

    // 1. 和数据库 建立连接
    // mongoose.connect("数据库的地址", "回调函数, 连接成功后会触发")
    mongoose.connect("mongodb://localhost:27017/test2218", () => {
        console.log("数据库连接成功");
    });

    // 2. 创建一个 "遥控器", 这个遥控器可以帮助我们简单的实现 "增删改查"
    // const Users = new mongoose.Schema('传递一些数据内容')
    /**
     *  创一个表模型 (创建的内容是 表头)
     */
    const Users = new mongoose.Schema({
        nickname: String, // 表示该 表 里, 有一个字段叫做 nickname, 类型为 字符串类型
        age: Number, // 类型为 数字类型
        username: {
            type: String,
            default: "用户账号", // 类型为 字符串类型, 用一个默认值为 'default'
        },
        createTime: {
            type: Date,
            default: new Date(), // 类型为 时间类型, 有一个默认值
        },
        password: {
            type: String,
            require: true, // 类型为 字符串类型, 当前项为 必填项
        },
        hobby: Array, // 类型为 数组类型
        gender: {
            type: String,
            enum: ["男", "女", "保密"], // 类型为 字符串类型, 但是值只能从当前数组中出现
        },
    });

    /**
     *  利用表模型, 创建我们所需要的 "遥控器"
     */
    // const UsersModel = mongoose.model('表名', '需要使用的表模型(就是表头)')
    const UsersModel = mongoose.model("users", Users);

    // 3. 利用刚才创建的 "遥控器" 进行 "增删改查"
    const fn = (a, b) => Math.floor(Math.random() * (b - a + 1)) + a;

    const str1 = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜";
    const str2 = "一二三四五六七八九十";
    const str3 = ["男", "女", "保密"];

    for (let i = 0; i < 1234; i++) {
        const info = {
            nickname:
                str1[fn(0, str1.length - 1)] +
                str2[fn(0, str2.length - 1)] +
                str2[fn(0, str2.length - 1)],
            age: fn(18, 35),
            password: fn(100000, 999999) + "",
            hobby: ["足球", "篮球"],
            gender: str3[fn(0, 2)],
        };
        new UsersModel(info).save().then((res) => console.log("存储数据成功"));
    }

连接数据库查询数据的代码如下:

    const mongoose = require("mongoose");
    // 1. 和数据库 建立连接
    mongoose.connect("mongodb://localhost:27017/test2218", () => {
        console.log("数据库连接成功");
    });

    // 2. 创建一个 "遥控器", 这个遥控器可以帮助我们简单的实现 "增删改查"
    /**
     *  创一个表模型 (创建的内容是 表头)
     */
    const Users = new mongoose.Schema({
        nickname: String, // 表示该 表 里, 有一个字段叫做 nickname, 类型为 字符串类型
        age: Number, // 类型为 数字类型
        username: {
            type: String,
            default: "用户账号", // 类型为 字符串类型, 用一个默认值为 'default'
        },
        createTime: {
            type: Date,
            default: new Date(), // 类型为 时间类型, 有一个默认值
        },
        password: {
            type: String,
            require: true, // 类型为 字符串类型, 当前项为 必填项
        },
        hobby: Array, // 类型为 数组类型
        gender: {
            type: String,
            enum: ["男", "女", "保密"], // 类型为 字符串类型, 但是值只能从当前数组中出现
        },
    });

    /**
     *  利用表模型, 创建我们所需要的 "遥控器"
     */
    const UsersModel = mongoose.model("users", Users);

    // 3. 利用刚才创建的 "遥控器" 进行 "增删改查"
    /**
     * 3.2.1 数据库的查询语法(基本语法)
     *      语法: 遥控器.find()
     *      结果: 查询该表内的所有数据,以数组的的形式返回
     */
    // UsersModel.find().then((res) => {
    //     console.log(res)
    // })
    /**
     * 3.2.2 条件查询
     *      语法: 遥控器.find({条件})
     *      结果: 查询该表内所有的 符合条件 的数据
     * */ 
    // UsersModel.find({
    //     age: 20
    // }).then((res) => {
    //     console.log(res)
    // })
    // UsersModel.find({
    //     age: {
    //         $gt: 20 //大于20的
    //     }
    // }).then((res) => {
    //     console.log(res)
    // })

    // UsersModel.find({
    //     age: {
    //         $lt: 20 //小于20的
    //     }
    // }).then((res) => {
    //     console.log(res)
    // })

    // UsersModel.find({
    //     age: { //大于20小于23
    //         $gt: 20,
    //         $lt: 23,
    //     }
    // }).then((res) => {
    //     console.log(res)
    // })

    // UsersModel.find({
    //     password: 123456
    // }).then((res) => {
    //     console.log(res)
    // })

    /**
     * 3.2.3 分页查询
     *      语法: 遥控器.find({条件}).skip(数字).limit(数字).then((res) =>console.log(res))
     *      结果: 查询该表内所有的 符合条件 的数据
     * */ 
    // UsersModel.find()
    //     .skip(0)
    //     .limit(5)
    //     .then((res) => {
    //         console.log(res)
    //     })

    // 3.2.4 根据ID查询 遥控器.findById('id号')
    UsersModel.findById('63f03d0370ee63d06b19914b').then((res) =>console.log(res))

连接数据库修改数据的代码如下:

    const mongoose = require("mongoose");
    // 1. 和数据库 建立连接
    mongoose.connect("mongodb://localhost:27017/test2218", () => {
        console.log("数据库连接成功");
    });
    // 2. 创建一个 "遥控器", 这个遥控器可以帮助我们简单的实现 "增删改查"
    /**
     *  创一个表模型 (创建的内容是 表头)
     */
    const Users = new mongoose.Schema({
        nickname: String, // 表示该 表 里, 有一个字段叫做 nickname, 类型为 字符串类型
        age: Number, // 类型为 数字类型
        username: {
            type: String,
            default: "用户账号", // 类型为 字符串类型, 用一个默认值为 'default'
        },
        createTime: {
            type: Date,
            default: new Date(), // 类型为 时间类型, 有一个默认值
        },
        password: {
            type: String,
            require: true, // 类型为 字符串类型, 当前项为 必填项
        },
        hobby: Array, // 类型为 数组类型
        gender: {
            type: String,
            enum: ["男", "女", "保密"], // 类型为 字符串类型, 但是值只能从当前数组中出现
        },
    });

    /**
     *  利用表模型, 创建我们所需要的 "遥控器"
     */
    const UsersModel = mongoose.model("users", Users);

    // 3. 利用刚才创建的 "遥控器" 进行 "增删改查"
    /**
     * 3.3.1 数据库的修改语法(修改单一数据)
     *      语法: 遥控器.updateOne()
     */
    // UsersModel.updateOne(
    //     {age: 18}, //找到age为18的第一个数据
    //     {nickname: 'QF001'} //要修改的数据
    // ).then((res) => {
    //     console.log(res)
    // })

    // 3.3.2 批量修改数据 
    // UsersModel.updateMany(
    //     {age: 18}, //找到age为18的所有数据
    //     {nickname: 'QF666'} //要修改的数据
    // ).then((res) => {
    //     console.log(res)
    // })
    // 批量修改后,检查有没有修改成功
    // UsersModel.find({
    //     age: 18
    // }).then((res) => {
    //     console.log(res)
    // })

连接数据库删除数据的代码如下:

    const mongoose = require("mongoose");
    // 1. 和数据库 建立连接
    mongoose.connect("mongodb://localhost:27017/test2218", () => {
        console.log("数据库连接成功");
    });

    // 2. 创建一个 "遥控器", 这个遥控器可以帮助我们简单的实现 "增删改查"
    /**
     *  创一个表模型 (创建的内容是 表头)
     */
    const Users = new mongoose.Schema({
        nickname: String, // 表示该 表 里, 有一个字段叫做 nickname, 类型为 字符串类型
        age: Number, // 类型为 数字类型
        username: {
            type: String,
            default: "用户账号", // 类型为 字符串类型, 用一个默认值为 'default'
        },
        createTime: {
            type: Date,
            default: new Date(), // 类型为 时间类型, 有一个默认值
        },
        password: {
            type: String,
            require: true, // 类型为 字符串类型, 当前项为 必填项
        },
        hobby: Array, // 类型为 数组类型
        gender: {
            type: String,
            enum: ["男", "女", "保密"], // 类型为 字符串类型, 但是值只能从当前数组中出现
        },
    });

    /**
     *  利用表模型, 创建我们所需要的 "遥控器"
     */
    const UsersModel = mongoose.model("users", Users);

    // 3. 利用刚才创建的 "遥控器" 进行 "增删改查"
    // 3.4 数据库的删除(了解即可)
    // 3.4.1 删除一个数据
    // UsersModel.deleteOne({
    //     age: 18
    // }).then((res) => {
    //     console.log(res)
    // })

    // 3.4.2 删除多个数据
    // UsersModel.deleteMany({
    //     age: 18
    // }).then((res) => {
    //     console.log(res)
    // })
    // 批量删除后检查有没有删除成功
    UsersModel.find({
        age: 18
    }).then((res) => {
        console.log(res)
    })