node链接数据库并查询

node链接数据库并查询

后台接口跨域

要在后端代码中允许跨域访问,这个是整个从前端到数据库的过程

app.all('*', function (req, res, next) {             //设置跨域访问
  //设置允许跨域的域名,*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin", "*");
  //允许的header类型
  res.header("Content-Type", "application/json;charset=utf-8");
  // 设置请求头中允许携带的参数
  res.header("Access-Control-Allow-Headers", "Content-Type,request-origin"); 
  // 允许客户端携带证书式访问。保持跨域请求中的Cookie。注意:此处设true时,Access-Control-Allow-Origin的值不能为 '*'
  res.header("Access-Control-Allow-Credentials", "true"); 
  
  res.header("Access-control-max-age", 1000); 
  //跨域允许的请求方式 
  res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
  next();
});

node数据库连接

1.安装‘mysql’

npm i mysql -S

2.配置

var mysql = require('mysql');//引入
//设置属性
var conPool = mysql.createPool({
    host: '127.0.0.1',  //主机ip
    port: 3306,//端口
    user: 'root',  //用户名
    password: '123456',	//数据库密码
    database: "school",		//数据库名称
    connectionLimit: 10,// "指定连接池中最大的链接数,默认是10",
    queueLimit: 10,// "指定允许挂起的最大连接数,如果挂起的连接数超过该数值,就会立刻抛出错误,默认属性值为0,代表不允许被挂起的最大连接数",
    multipleStatements: true  //是否允许多条语句查询,一般允许
});
//查询方法
module.exports = function exec(sql, params, callBack) {
    conPool.getConnection((err, coon) => {
        if (err) {
            console.log('链接失败');
            return
        } else {
            coon.query(sql, params, callBack)
            coon.release()//释放链接池
            //不加return报错原因 请求头发送到客户端后无法设置请求头
            return //服务器在每次响应后添加return,避免多余响应。
        }

    })
}




这里面用到的是链接池的方式,因为单条链接查询的时候查询量比较大的时候,有的时候会报错,并且还消耗性能,有兴趣的可以去了解连接池的作用

  • 释放连接对象(放回连接池)
    connection.release();
  • 从连接池中移除连接对象
    connection.destory();
  • 关闭该连接池
    pool.end();
//引用封装数据库
const {exec}=require("./DB")
app.get('/', (req, res) => {
//因为调用exec返回的是promise对象,所以需要then的回调函数取值
 exec('select * from user_info where 1=1').then((data)=>{
  return data
 })
 res.send('11')
})
前端渲染

用的是axios请求 另外记住地址前面要加http不然会报错

axios.get('http://192.168.0.102:3000/').then(res => {
    box.innerHTML = res.data[0].user_name
  })

在这里插入图片描述

在这里插入图片描述

在Vue中链接数据库,需要使用Node.js作为后端,通过Node.js连接数据库,然后在Vue中通过API请求获取数据。下面是一个简单的示例: 1. 安装相关依赖 在Node.js中使用`npm`或`yarn`安装以下依赖: - `express`: 用于创建Web服务器 - `cors`: 用于允许跨域请求 - `mysql`: 用于连接MySQL数据库 ``` npm install express cors mysql ``` 2. 创建Node.js服务器 在Node.js中创建一个服务器,用于处理Vue发送的请求,连接数据库获取数据。示例代码如下: ```javascript const express = require('express'); const cors = require('cors'); const mysql = require('mysql'); const app = express(); // 允许跨域请求 app.use(cors()); // 创建MySQL连接 const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'mydatabase' }); // 连接数据库 connection.connect((error) => { if (error) { console.log('Error connecting to database:', error); } else { console.log('Connected to database!'); } }); // 处理Vue发送的请求 app.get('/api/users', (req, res) => { const query = 'SELECT * FROM users'; // 查询数据库 connection.query(query, (error, results) => { if (error) { console.log('Error querying database:', error); res.status(500).send('Error querying database'); } else { res.send(results); } }); }); // 启动服务器 app.listen(3000, () => { console.log('Server listening on port 3000'); }); ``` 以上代码创建了一个Node.js服务器,监听端口3000,提供了一个API `/api/users`,用于获取所有用户信息。 3. 在Vue中发送请求 在Vue中使用`axios`库发送请求,获取Node.js服务器提供的数据。示例代码如下: ```javascript import axios from 'axios'; export default { data() { return { users: [] }; }, mounted() { axios.get('http://localhost:3000/api/users') .then(response => { this.users = response.data; }) .catch(error => { console.log(error); }); } }; ``` 以上代码在Vue组件中发送一个GET请求,获取Node.js服务器提供的用户信息,将数据保存在`users`数组中。 注意:以上代码仅为示例,实际项目中需要根据需求修改。另外,为了安全起见,需要在Node.js服务器端进行身份验证和数据过滤处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我斌哥哥

给打赏的我会单独一对一讲解

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值