❤Nodejs 第五章(操作本地数据库优化和处理)

简介: 【4月更文挑战第5天】本文介绍了在Node.js中操作本地数据库的优化和处理方法。首先展示了如何优化用户查询接口,根据用户条件查询用户列表。通过设置查询参数并使用axios发送GET请求,结合Express框架从`req.query`获取参数,实现动态SQL查询。接着,文章演示了根据用户ID查询用户详细信息,指出使用`req.params`而非`req.query`来获取URL路径中的动态ID。

❤Nodejs 第五章(操作本地数据库优化和处理)

源码地址(https://gitee.com/lintaibai/NexusVue)喜欢的给个star吧

【4月更文挑战第5天】

1、优化用户查询接口,根据用户条件查询我们的列表

image.png

先拿sql数据命令试试

SELECT * FROM user WHERE name = 'san娟';

image.png

我们的查询命令没问题,接下来把我们的传入的活数据给传入进去即可

传入查询参数之中的params参数进行鞋带参数的查询

// 获取用户
function getUserList() {
   
    let api = "http://localhost:8888/api/user";
    const params = {
   
      name: queryParams.value.name?queryParams.value.name:'',
    };
    axios.get(api,{
   
      params: params
    }).then(res => {
   
        // console.log(res, '/user/list');
        if (res.status == 200) {
   
            console.log(res, 'res');
            tableData.value = res.data.data;
        }
    })
}

app.js之中添加上对应的接收参数query

// 查询用户2
app.get('/api/user', (req, res) => {
   
  const {
    name } = req.query;
  const values =[name];
  const sql = `SELECT * FROM user WHERE name = ? `;  // 准备 SQL 插入语句
  // 查询数据库并返回数据
  connection.query(sql,values,(err, results) => {
   
    console.log(err,'err');
    // console.log(results,'results');
    if (err) {
   
      console.error('Error querying database:', err);
      res.status(500).json({
    error: 'Internal server error' });
      return;
    }
    res.json({
   
      code:'200',
      data:results,
    });
  });
});

查询可以看出,我们查询参数已经传进去了
image.png

返回参数也可以正常显示
image.png

到这里我们就实现了根据name查询的功能

这里可以留一个小的测试,进一步对多个查询参数进行查询,并且在数据为空的时候也可以进行正常的查询!

2、根据用户ID查询用户详细信息

接下来我们做一个修改,但是之前要根据用户的iD做一个查询然后回显用户的详情数据

image.png

先试试我们的sql查询语句:

SELECT * FROM user WHERE id = 13

查询结果没问题,接下来我们以地址的方式携带参数到get请求的最后:
最后的查询地址就是:http://localhost:8888/api/user/3

3是查询的用户 id

image.png

我们的查询用户详情接口如下图:

// 查询用户详情 3
app.get('/api/user/:id', (req, res) => {
   
  console.log(req.query,'req.query');
  const {
    id } = req.query;
  const values =[id];
  let query = 'SELECT * FROM user WHERE id = ?';
  connection.query(query,values,(err, results) => {
   
    console.log(err,'err');
    // console.log(results,'results');
    if (err) {
   
      console.error('Error querying database:', err);
      res.status(500).json({
    error: 'Internal server error' });
      return;
    }
    res.json({
   
      code:'200',
      data:results,
    });
  });
});

查询id为3 的,这边我们可以看到数据库是存在数据的,但是查出来的数据却为空。

image.png

查看我们从接口拿到的数据可以发现:
req.query压根没有参数

image.png

image.png

在这里我们可以看一下req.queryreq.params的区别

....

接下来就知道我为什么要将接收参数给换掉,我们使用req.params来拿到参数
image.png

成功拿到参数,对于前端而言,接下来拿数组第一个数据这种操作肯定是不行的,所以我们从后台接口里面返回的数据进行一下优化

 res.json({
   
      code:'200',
      data:results?results[0]:{
   },
 });

ok数据已经成功显示!

image.png

3、req.queryreq.params的区别

req.queryreq.params是 Express 框架中用于从 HTTP 请求中获取参数的两种常见方式。它们的区别在于获取参数的方式和用途不同。

  1. req.query

    • req.query 是 Express 中的一个对象,用于获取 URL 查询参数(即 URL 中以 ? 开头的参数),通常用于 GET 请求。
    • 它会将 URL 查询参数解析成一个对象,其中键值对分别对应参数的名称和值。
    • 在路由处理函数中,可以通过 req.query 直接访问这个对象,从而获取请求中的查询参数。
javascriptCopy Code
// 示例 URL:http://example.com/api/users?name=John&age=30
console.log(req.query);
// 输出:{ name: 'John', age: '30' }
  1. req.params

    • req.params 是 Express 中的一个对象,用于获取路由参数,通常用于动态路由。
    • 在定义路由时,通过在路由路径中使用冒号(:)定义参数,这些参数会被 Express 解析并放入 req.params 中。
    • 这种方式适用于从 URL 中获取动态部分,例如用户 ID 或者其他标识符。
javascriptCopy Code
// 示例路由:/api/users/:id
console.log(req.params.id);
// 输出:用户ID
  1. 区别和用途

    • req.query 用于获取 URL 查询参数,适用于获取客户端通过 URL 传递的数据。
    • req.params 用于获取路由参数,适用于获取客户端通过 URL 路径中的动态部分传递的数据。
    • 通常,如果参数是作为查询字符串出现在 URL 中,使用 req.query;如果参数是作为路由的一部分出现在 URL 中,使用 req.params

总之,req.queryreq.params 分别用于获取不同类型的客户端传递的数据,具体根据请求中参数的形式来选择使用哪种方式

因为我这里采用的直接获取用户详情肯定是一个id,所以采用的就是req.params这种方式

image.png

目录
相关文章
|
9天前
|
数据库 JavaScript SQL
❤Nodejs 第八章(操作本地数据库优化查询为分页查询方式)
【4月更文挑战第8天】在Node.js中,本章讲述了如何优化本地数据库查询以实现分页。首先,添加了前端分页参数`pageNum`(页码)和`pageSize`(每页条数)。接着,通过打印`req.query`来验证参数是否正确传递。初始查询示例为`SELECT * FROM user WHERE age = 18 LIMIT 0, 10`。当改变分页参数时,查询能相应更新。在实现动态偏移量`offset`时,起初因误添加`' AND' : ' WHERE'`导致错误,修正后使用`LIMIT`和计算出的`offset`进行分页。
47 5
❤Nodejs 第八章(操作本地数据库优化查询为分页查询方式)
|
9天前
|
JSON JavaScript 前端开发
❤Nodejs 第九章(token身份认证和express-jwt的安装认识)
【4月更文挑战第9天】Node.js第九章介绍了Token身份认证,特别是JWT(JSON Web Token)作为跨域认证的解决方案。JWT由Header、Payload和Signature三部分组成,用于在客户端和服务器间安全传输用户信息。前端收到JWT后存储在localStorage或sessionStorage中,并在请求头中发送。Express-JWT是一个中间件,用于解析JWT。基本用法包括设置secret和algorithms。注意安全问题,避免混合使用不同算法以防止降级攻击。
34 0
|
2月前
|
JavaScript Linux 数据安全/隐私保护
node内网安装npm私服以及依赖包上传发布verdaccio
node内网安装npm私服以及依赖包上传发布verdaccio
75 1
|
3月前
|
Web App开发 缓存 JavaScript
【安装指南】nodejs下载、安装与配置详细教程
这篇博文详细介绍了 Node.js 的下载、安装与配置过程,为初学者提供了清晰的指南。读者通过该教程可以轻松完成 Node.js 的安装,了解相关配置和基本操作。文章首先介绍了 Node.js 的背景和应用场景,随后详细说明了下载安装包、安装步骤以及配置环境变量的方法。作者用简洁明了的语言,配以步骤图示,使得读者能够轻松跟随教程完成操作。总的来说,这篇文章为初学者提供了一个友好的入门指南,使他们能够顺利开始使用 Node.js 进行开发。
213 1
【安装指南】nodejs下载、安装与配置详细教程
|
3月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
77 0
|
2天前
|
JSON JavaScript 关系型数据库
❤Nodejs 第十六章(Nodejs环境安装和依赖使用)
【4月更文挑战第16天】本文介绍了Node.js环境安装和项目搭建步骤。检查Node.js和npm版本安装核心依赖,如Express(Web应用框架)、MySQL库、CORS(解决跨域问题)、body-parser(解析POST数据)、express-jwt和jsonwebtoken(JWT验证)、multer(文件上传处理)、ws(WebSocket支持),以及可选的dotenv(管理环境变量)和ejs(模板引擎)。完整源码可在Gitee开源项目[nexusapi](https://gitee.com/lintaibai/nexusapi)中找到。
9 0
|
9天前
|
JavaScript Linux Python
Linux 安装 Node.js | NPM
Linux 安装 Node.js | NPM
6 0
|
24天前
|
JavaScript Windows
NodeJS 安装及环境配置
NodeJS 安装及环境配置
|
2月前
|
Linux 开发工具 git
node使用nrm 管理托管node的安装源
node使用nrm 管理托管node的安装源
52 1
|
2月前
|
JavaScript
用户安装nodejs设置路径打包项目
用户安装nodejs设置路径打包项目
37 1