10-JS创建项目与连接Mysql总结
JS创建项目与连接Mysql总结
一、npm介绍
-
npm概述
npm全称为:Node Package Manager , 是Node.js标准的软件包管理器。起初是作为下载和管理Node.js包依赖的方式,但现在也已成为JavaScript中使用的工具。
npm依赖包查询网址:https://www.npmjs.com/ -
npm相关命令
# 安装单个软件包 npm install <package-name> #查看所有的依赖软件包 npm list #查看指定的依赖软件包 npm list <package-name> #更新当前依赖的软件包 npm update #更新指定的依赖软件包 npm update <package-name> #卸载当前的 依赖软件包 npm uninstall <package-name>
二、NodeJS在VScode环境下创建项目
-
首先新建一个项目文件夹
-
右键该文件夹,选择 在终端打开菜单项
-
在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
- 使用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, }- 连接数据库完整的代码如下
// 引入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); })();
浙公网安备 33010602011771号