nodeJs搭配mysql,同样可以玩的飞起

篇一:连接mysql,常用的增删改查操作

1、数据的连接

  • 在node中连接mysql数据库需要安装一个第三方插件包
    • 运行命令:npm i mysql -S,等待完成即可
  • 可以下载一个phpStudy模拟mysql的服务,打开mysql客户端,建表,然后创建http服务,连接数据库
    • 导入mysql模块,通过createConnection连接数据库
1
2
3
4
5
6
7
8
9
10
javascript复制代码//导入mysql模块
const mysql = require("mysql");

// 创建mysql的连接对象
const conn=mysql.createConnection({
host:'localhost',// 域名或者ip
user:"root",//创建的mysql数据库用户名
password:'root', //创建的mysql数据库密码
database:'mysql_001'//创建的mysql数据库名称
})

2、数据的增删改查,node中的sql语句和别的语言的sql语句可能个别的地方会不用不同,我们使用的时候一定要多查文档

  • 查询语句
    • select查询 select * from users *代表全查,users是被查询的创建的表名
1
2
3
4
5
6
javascript复制代码// 直接调用conn.query(`要执行的sql语句`,(err,resule)=>{}方法执行sql语句就行)
const sqlStr='select * from users'
conn.query(sqlStr,(err,res)=>{
if(err) return console.log('获取数据失败'+ err.message);
console.log(res);
})
  • 新增语句
    • insert插入 insert into users set? insert是插入,users是被操作的表,?是一个占位符,执行语句的时候需要插入的数据就会替代 ?
1
2
3
4
5
6
7
javascript复制代码// 新增
const users={usename:"小娟",age:22,gender:'女'}
const sqlStr2='insert into users set?'
conn.query(sqlStr2,users,(err,res)=>{
if(err) return console.log('新增数据出错'+err.message);
console.log(res);
})
  • 修改语句
    • update更新 update users set ? where id=? 在node中只要是需要查询或者替换的地方都要使用?代替 where 后面紧跟查询条件
1
2
3
4
5
6
7
8
9
javascript复制代码// 修改
const users={id:2,usename:"小美",age:22,gender:'女'}
const sqlStr3='update users set ? where id=?'
// 注意,在执行query的时候,如果sql语句中,包含了多个 ? 占位符,则第二个实参必须
// 传递一个数组,数组中的每一项,都要和sql语句中的 ? 对应上
conn.query(sqlStr3,[users,users.id],(err,res)=>{
if(err) return console.log('修改数据出错'+err.message);
console.log(res);
})
  • 删除语句
    • delete删除 delete from users where id=? delete删除,users是被操作的表,?被删除的id值
1
2
3
4
5
6
javascript复制代码// 删除
const sqlStr4='delete from users where id=?'
conn.query(sqlStr4,5,(err,res)=>{
if(err) return console.log('删除数据出错'+err.message);
console.log(res);
})

篇二:模块的加载机制

  • 优先从缓存中加载
    • 当一个模块初次被 require 的时候,会执行模块中的代码,当第二次加载相同模块的时候,会优先从缓存中查找,看有没有这样的一个模块!
    • 好处:提高模块的加载速度;不需要每次都重新执行并加载模块!
  • 核心模块的加载机制
    • 先查找缓存;如果缓存中没有,再去加载核心模块;
  • 用户模块的加载机制
    • 先查找缓存;
    • 如果缓存中没有则尝试加载用户模块;
    • 如果在加载用户模块时候省略了后缀名,则:
      • 首先,严格按照指定的名称去查找
      • 其次,尝试加载后缀名是 .js 的文件
      • 如果没有.js的文件,则尝试加载 .json 结尾的文件
      • 如果没有 .json 的文件,则尝试加载 .node 结尾的文件
      • 查找规则:index -> index.js -> index.json -> index.node
  • 第三方模块的加载机制
    • 先在项目根目录中查找node_modules文件夹
    • 在node_modules文件夹下,查找模块相关的文件夹
    • 在对应的文件夹下,查找package.json的文件
    • 查找package.json文件中的main属性(指定了模块的入口文件)
    • 如果找到了main属性,同时,main属性指定的文件路径存在,那么尝试加载指定的文件模块
    • 加入没有main属性,或者main属性对应的文件不存在,或者没有package.json,那么会依次尝试加载index.js,index.json,index.node;
    • 如果没有index相关的文件,或者没有指定模块对应文件夹,或者,当前项目根目录中没有node_modules文件夹,则向上一层目录中查找node_modules,查找规则同上!
    • 最后,如果在项目所在磁盘的盘符根目录中,还找不到对应模块,则报错:cannot find module ***

篇三:express中获取参数的几种形式

  • 获取?id=10&name=zs中的查询参数:
    • 直接使用 req.query 获取参数即可;
    • 注意:URL 地址栏中通过 查询字符串 传递的参数,express 框架会直接解析,大家只需要使用 req.query 直接获取 URL 中 查询字符串的参数;
  • 从URL地址中获取路径参数:
    • 假设后台的路由是 app.get('/user/:id/:name', (req, res) => {})
    • 假设客户端浏览器请求的URL地址为:http://127.0.0.1:3001/user/10/zs
    • 直接使用req.params可以获取URL地址中传递过来的参数;
  • 从post表单中获取提交的数据:
    • 借助于body-parser来解析表单数据
    • 安装:npm i body-parser -S
    • 导入:const bodyParser = require('body-parser')
    • 注册中间件:app.use(bodyParser.urlencoded({ extended: false }))
    • 使用解析的数据: req.body 来访问解析出来的数据

篇四:实现前后端分离项目跨域的解决

  • 前端和后端运行的端口号不同造成跨域
    • jsonp和COR可以很好的解决跨域问题
      • jsonp: 动态创建script标签;
        • JSONP发送的不是Ajax请求
        • 不支持 Post 请求;
      • CORS中文意思是跨域资源共享 ,需要服务器端进行 CORS 配置;
        • CORS 发送的是真正的Ajax请求
        • CORS 支持Ajax的跨域
        • 如果要启用 CORS 跨域资源共享,关键在于 服务器端,只要 服务器支持CORS跨域资源共享,则 浏览器肯定能够正常访问 这种 CORS 接口;而且,客户端在 发送 Ajax的时候,就像发送普通AJax一样,没有任何代码上的变化;
      • 对于Node来说,如果想要开启 CORS 跨域通信,只需要安装cors的模块即可;
1
2
3
4
5
6
php复制代码//解决跨域
//1.安装cors:npm install cors -S
//2.引入中间件
const cors=require('cors')
//3.注册中间件
app.use(cors())

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%