❤ Node05-增删改查接口优化

news2024/9/22 7:26:01

❤ Node05-增删改查接口优化

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

先拿sql数据命令试试

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

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

(1)传入查询参数之中的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,
    });
  });
});

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

返回参数也可以正常显示

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

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

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

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

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

js

SELECT * FROM user WHERE id = 13

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

3是查询的用户 id

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

js

// 查询用户详情 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 的,这边我们可以看到数据库是存在数据的,但是查出来的数据却为空。

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

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

....

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

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

js

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

ok数据已经成功显示!

3、req.query 和 req.params的区别​

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

  1. req.query
    • req.query 是 Express 中的一个对象,用于获取 URL 查询参数(即 URL 中以 ? 开头的参数),通常用于 GET 请求。
    • 它会将 URL 查询参数解析成一个对象,其中键值对分别对应参数的名称和值。
    • 在路由处理函数中,可以通过 req.query 直接访问这个对象,从而获取请求中的查询参数。

js

// 示例 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 或者其他标识符。

js

// 示例路由:/api/users/:id
console.log(req.params.id);
// 输出:用户ID
  1. 区别和用途
    • req.query 用于获取 URL 查询参数,适用于获取客户端通过 URL 传递的数据。
    • req.params 用于获取路由参数,适用于获取客户端通过 URL 路径中的动态部分传递的数据。
    • 通常,如果参数是作为查询字符串出现在 URL 中,使用 req.query;如果参数是作为路由的一部分出现在 URL 中,使用 req.params

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2117671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游泳馆押金管理+手牌管理+刷手牌 开通方法

一、游泳馆手牌押金管理 1. 减少手牌丢失:收取押金可以让顾客更加谨慎地保管手牌,降低手牌丢失的概率。 2. 保障设施安全:有助于防止顾客对手牌的不当使用或故意破坏,保护游泳馆的设施和资源。 3. 规范顾客行为:促使…

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等,它们的父类是于ButtonStyleButton。 基本的按钮特点: 1.按下时都会有“水波文动画”。 2.onPressed属性设置点击回调,如果不提供该回调则按钮会处于禁…

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技…

哈希签名溯源--Lamport40签名算法

背景 哈希签名是指只依赖哈希函数的数字签名算法(而非某个数学问题,例如ECC的离散对数问题、RSA的大整数因式分解)。这类算法一直不是主流,但随着量子计算机及其配套算法(舒尔算法)的出现,ECC和…

kubeadm 初始化 k8s 证书过期解决方案

概述 在使用 kubeadm 初始化的 Kubernetes 集群中,默认情况下证书的有效期为一年。当证书过期时,集群中的某些组件可能会停止工作,导致集群不可用。本文将详细介绍如何解决 kubeadm 初始化的 Kubernetes 集群证书过期的问题,并提…

ETF全量后复权数据更新与一个限时免费的星球

原创第645篇 | AI量化实验室 AI量化实验室星球本周计划: 1、“七天入门量化投资”专栏更新完成第三天和第四天。 2、lightgbm为代表的机器学习因子合成与stockranker实现。 3、etf全量数据更新到最新。 class ETFQuotes(Quotes):def __init__(self, tb_basiebasi…

MySQL:运维管理-主从复制

目录 一、主从复制的概述二、主从复制的工作原理三、搭建主从复制的结构3.1 环境准备3.2 搭建配置(主库配置)3.3 搭建配置(从库配置)3.4 测试 一、主从复制的概述 主从复制是指将主数据库中的DDL和DML操作的二进制文件保存到本地&…

通义千问更新数学大模型及视觉多模态

Qwen2-Math,这是通义千问专门为数学场景优化的模型,其数学能力指标甚至超越了GPT4o, Claude3.5 Sonnet, Deepseek Coder等顶流模型,目前从指标来看是最强的数学模型。目前是免费供应,大家碰到数学问题可以选择使用这个模型。 Qw…

[数据集][图像分类]嘴巴张开闭合分类数据集6397长2类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):6397 分类类别数:2 类别名称:["close","open&qu…

linux安装redis、使用redis、用springboot连接redis

安装redis 解压redis的tar包 tar -vsxf 包名 解压完之后进入解压过的tar包里 编译 make 安装和安装的位置 make PREFIX/opt/redis/redisserver install 成功后进入安装的位置 cd /opt/redis/redisserver/ 进入bin cd bin 找到redis-server,运行 ./redis-…

66城代表齐聚!蓝卓分享“全国经验”,批量复制推动中小企业数字化转型

9月6日下午,2024中小企业数字化转型现场交流活动在浙江宁波隆重举行。 全国66个中小企业试点城市500多名中小企业主管部门及专家学者,制造业企业、数字化转型服务商等重点企业代表齐聚宁波,共同探讨中小企业数字化转型的模式和路径。 工业和…

Keysight E4991A射频阻抗/材料分析仪3GHz

Keysight E4991A射频阻抗/材料分析仪3GHz KEYSIGHT E4991A(安捷伦)(要求提供) Keysight E4991A 射频阻抗/材料分析仪提供出色的阻抗测量性能和强大的内置分析功能。它将为评估 3 GHz 范围内组件的组件和电路设计师提供研发创新。…

小琳AI课堂:深入学习Transformer模型

大家好,这里是小琳AI课堂。今天我们来深入学习Transformer模型,这个在深度学习领域引发革命的技术。 Transformer模型的革命性优势 Transformer模型被认为是引发了深度学习领域革命的技术,主要原因有以下几点: 突破性的性能提升…

智能化升级:未来交流充电桩的创新之路

随着电动汽车的普及,交流充电桩作为充电基础设施的重要组成部分,其未来的发展趋势备受关注。本文将探讨交流充电桩在未来可能呈现的几个发展方向。 一、智能化升级 未来的交流充电桩将更加智能化。通过物联网技术,充电桩将能够实现远程监控…

已解决:ppt文件打开就是只读模式,如何改为可编辑模式?

PPT文档打开是只读模式,如何改成可编辑文档呢?这需要分几种情况来说,所以今天将介绍几种方法帮助PPT只读文档改为可编辑文档。 方法一: 我们可以先查看一下文件属性,属性中有只读属性,当我们打开文档之后带…

3个办法轻松操作:flac转mp3在线快速完成

在这个时代,音频已经渗入人们的生活,成为日常中不可或缺的一部分。因为实际需要,人们分门别类地设置了许多音频格式。flac格式作为一种常见的无损音频压缩格式,通常用于存储高品质音频文件。 对于那些希望在不同设备上享受音乐的…

设计模式 解释器模式(Interpreter Pattern)

文章目录 解释器模式简绍解释器模式的结构优缺点UML图具体代码实现Context 数据实体类,可以包含一些方法Abstract Expression 创建接口方法Terminal Expression 对数据简单处理Non-Terminal Expression 同样实现抽象接口方法Client(客户端) 调…

Java 字符串、数组、ArrayList之间的相互转换

1. 数组转字符串 import java.util.Arrays;public class Test02 {public static void main(String[] args){String[] scores1 new String[]{"10","20","30","40","50"};String[] scores2 {"10","20",…

开源的 Kafka 管理平台

来源:github.com/provectus/kafka-ui Apache Kafka UI 是一个免费的开源 Web UI,用于监控和管理 Apache Kafka 集群,可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控制等功能。 1 …

自编码器(Autoencoder,AE)

Autoencoders and their applications in machine learning: a survey 1、Autoencoder(自编码器,AE) 自编码器(Autoencoder)是一种无监督学习算法,主要用于数据的降维、特征提取和数据重建。自编码器由两个…