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

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

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

【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

目录
相关文章
|
1月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
122 62
|
7天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
28 11
|
27天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
67 31
|
27天前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
27天前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
1月前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####
|
1月前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
49 4
|
1月前
|
SQL druid 数据库
如何进行数据库连接池的参数优化?
数据库连接池参数优化包括:1) 确定合适的初始连接数,考虑数据库规模和应用需求;2) 调整最大连接数,依据并发量和资源状况;3) 设置最小空闲连接数,平衡资源利用和响应速度;4) 优化连接超时时间,确保系统响应和资源利用合理;5) 配置连接有效性检测,定期检查连接状态;6) 调整空闲连接回收时间,适应访问模式并配合数据库超时设置。
|
1月前
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
54 7