10-JS创建项目与连接Mysql总结

JS创建项目与连接Mysql总结

一、npm介绍

  1. npm概述

    npm全称为:Node Package Manager , 是Node.js标准的软件包管理器。起初是作为下载和管理Node.js包依赖的方式,但现在也已成为JavaScript中使用的工具。
    npm依赖包查询网址:https://www.npmjs.com/

  2. npm相关命令

     # 安装单个软件包
     npm install <package-name>
    
     #查看所有的依赖软件包
     npm list
     #查看指定的依赖软件包
     npm list <package-name>
    
     #更新当前依赖的软件包
     npm update
     #更新指定的依赖软件包
     npm update <package-name>
    
     #卸载当前的 依赖软件包
     npm uninstall <package-name>
    

二、NodeJS在VScode环境下创建项目

  1. 首先新建一个项目文件夹

  2. 右键该文件夹,选择 在终端打开菜单项

  3. 在VScode提供的终端环境下,输入初始化命令,即:

    // -y 表示使用默认配置参数,如果你要自定义,可以 去掉-y,根据终端界面的提示,输入对应的参数
     npm init -y
    

    上面的命令执行完毕后,会在当前目录下,生成一个配置文件package.json, 配置文件的内容如下:

    {   
        "name": "05-day",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
        //这里可以自定义运行命令:npm run 命令名
        //JS项目程序入口一般为index.js,需要手动创建
        "start": "node ./index.js"
              },
        "keywords": [],
        "author": "",
        "license": "ISC",
        //安装mysql后会有下面的信息
        "dependencies": {
        "mysql": "^2.18.1"
        }
    }
    

    三、JS连接Mysql

    1. 使用VScode安装mysql驱动到当前项目中,打开终端,切换到当前项目的文件下,输入命令:
    #默认为mysql 5.x的版本
    npm install mysql
    #mysql 8.x
     npm install @mysql/xdevapi
    
    #install 可以简化为 i
    npm i mysql
    npm i @mysql/xdevapi
    

    安装成功后,会生成node_modules文件夹和package-lock.json文件,一般情况下,这2个文件不需要修改

    2.书写JS代码连接数据库
    为了便于使用,这里写一个 用于连接Mysql的模块,在使用时直接调用即可

    注:模块文件为mysql5.js, 在util文件夹下,util文件夹在项目根目录下, 与node_modules文件夹平级

    2.1 首先需要引入Mysql模块

    const mysql = require('mysql');
    

    2.2 获得一个连接对象

    const connection = mysql.createConnection({
    //主机地址
    host: '127.0.0.1',
    //端口号
    port: 3306,
    //用户名
    user: 'root',
    //密码
    password: '123',
    //要连接到的数据库名
    database: 'company'
    });
    

    2.3 封装执行sql语句的函数(增-删-改 | 查询)
    增-删-改的函数

      /**
       * 
       * @param {*} sql  要执行的sql语句
       * @param  {...any} params 不定长参数(不能直接传数组)
       * @returns 
       */
    function executeUpdate(sql, ...params) {
    //异步函数
    return new Promise((resolve, reject) => {
        connection.query(sql, params, function (error, result) {
            if (error) reject({ success: false, error });
            resolve({ success: true, affectedRows: result.affectedRows });
        });
    });
    }
    

    查询的函数

        /**
       * 
       * @param {*} sql 要执行的sql语句
       * @param  {...any} params 不定长参数,不能直接传数组
       * @returns 
       */
    function executeQuery(sql, ...params) {
        return new Promise((resolve, reject) => {
            connection.query(sql, params, function (error, rows) {
                if (error) reject({ success: false, error });
                resolve({ success: true, rows });
            });
        });
        }
    

    2.4 导出模块

         // 导出模块
        module.exports = {
            insert: executeUpdate,
            delete: executeUpdate,
            update: executeUpdate,
            select: executeQuery,
        }
    
    1. 连接数据库完整的代码如下
    // 引入mysql的模块
     const mysql = require('mysql');
     // 获得连接
     const connection = mysql.createConnection({
         host: '127.0.0.1',
         port: 3306,
         user: 'root',
         password: '123',
         database: 'company'
     });
    
         /**
         * 
         * @param {*} sql 要执行的sql语句
         * @param  {...any} params 不定长参数,不能直接传数组
         * @returns 
         */
         function executeQuery(sql, ...params) {
             return new Promise((resolve, reject) => {
                 connection.query(sql, params, function (error, rows) {
                     if (error) reject({ success: false, error });
                     resolve({ success: true, rows });
                 });
             });
         }
         /**
         * 
         * @param {*} sql  要执行的sql语句
         * @param  {...any} params 不定长参数(不能直接传数组)
         * @returns 
         */
         function executeUpdate(sql, ...params) {
             return new Promise((resolve, reject) => {
                 connection.query(sql, params, function (error, result) {
                     if (error) reject({ success: false, error });
                     resolve({ success: true, affectedRows: result.affectedRows });
                 });
             });
         }
    
         // 导出模块
         module.exports = {
             insert: executeUpdate,
             delete: executeUpdate,
             update: executeUpdate,
             select: executeQuery,
         }
    

    4.连接示例代码

     //定义查询的sql语句
     const sql = 'select * from department limit 20';
     //定义自执行函数测试mysql的连接
     (async function () {
         //执行查询
         const  result = await mysql.select(sql);
         //打印查询结果
         console.log(result);
     })();
    
posted @ 2022-10-21 17:17  书画三千里  阅读(362)  评论(0)    收藏  举报