当前位置: 首页 > news >正文

18. 查看帖子详情

文章目录

  • 一、建立路由
  • 二、开发GetPostDetailHandler
  • 三、编写logic
  • 四、编写dao层
  • 五、编译测试运行

在这里插入图片描述

一、建立路由

router/route.go

	v1.GET("/post/:id", controller.GetPostDetailHandler)

二、开发GetPostDetailHandler

controller/post.go

func GetPostDetailHandler(c *gin.Context) {postIdStr := c.Param("id")postId, err := strconv.ParseInt(postIdStr, 10, 64)if err != nil {zap.L().Error("get post detail with invalid param", zap.Error(err))ResponseError(c, CodeInvalidParam)return}data, err := logic.GetPostById(postId)if err != nil {zap.L().Error("logic.GetPostById() failed", zap.Error(err))ResponseError(c, CodeServerBusy)return}ResponseSuccess(c, data)

三、编写logic

logic/post.go

package logicimport ("bluebell/dao/mysql""bluebell/models""go.uber.org/zap"
)// GetPostById 根据帖子id查询帖子详情数据
func GetPostById(pid int64) (data *models.ApiPostDetail, err error) {// 查询并组合我们接口想用的数据post, err := mysql.GetPostById(pid)if err != nil {zap.L().Error("mysql.GetPostById(pid) failed",zap.Int64("pid", pid),zap.Error(err))return}// 根据作者id查询作者信息user, err := mysql.GetUserById(post.AuthorId)fmt.Println(user.UserId, user.Username, *user)if err != nil {zap.L().Error("mysql.GetUserById(post.AuthorID) failed",zap.Int64("author_id", post.AuthorId),zap.Error(err))return}// 根据社区id查询社区详细信息community, err := mysql.GetCommunityDetailByID(post.CommunityId)if err != nil {zap.L().Error("mysql.GetUserById(post.AuthorID) failed",zap.Int64("community_id", post.CommunityId),zap.Error(err))return}// 接口数据拼接data = &models.ApiPostDetail{AuthorName: user.Username,Post:       post,Community:  community,}return
}

四、编写dao层

mysql/post.go:增加获取帖子详情函数

func GetPostById(id int64) (*models.Post, error) {post := &models.Post{}err := db.Where("id = ?", id).Find(&post).Errorreturn post, err
}

五、编译测试运行

在这里插入图片描述

相关文章:

18. 查看帖子详情

文章目录 一、建立路由二、开发GetPostDetailHandler三、编写logic四、编写dao层五、编译测试运行 一、建立路由 router/route.go v1.GET("/post/:id", controller.GetPostDetailHandler)二、开发GetPostDetailHandler controller/post.go func GetPostDetailHand…...

【算法刷题】Day30

文章目录 1. 汉诺塔问题题干:算法原理:代码: 2. 合并两个有序链表题干:算法原理:代码: 3. 反转链表题干:算法原理:代码: 4. 最大子数组和题干:算法原理&#…...

docker容器镜像管理+compose容器编排(持续更新中)

目录 一、 Docker的基本组成 二、 容器和镜像的关系 2.1 面向对象角度 2.2 从镜像容器角度 三、 容器命令 3.1 使用Ubuntu 3.1.1 下载镜像 3.1.2 新建和启动容器 run 3.1.3交互式 compose编排与部署 1. docker-compose部署 2. docker-compose.yml模板 …...

【Greenhills】MULTIIDE集成第三方的编辑器进行源文件编辑工作

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 在使用GHS进行工作的时候,可以集成第三方的编辑器进行源文件编辑工作 2、 问题场景 用于解决在GHS中进行项目开发时,对于GHS的编辑器使用不习惯,想要切换到其他第三方的编辑…...

【Flutter】 search_page使用心得

https://pub.dev/packages/search_page 以上就是search_page地址。使用方法跟具有哪些功能网页都有,这篇文章主要讲我在使用这个插件时遇到的坑。 坑1:不能自己刷新界面 我在search_page中传入的builder是带有checkbox的ListTile,当我点击…...

前端Vue列表组件 list组件:实现高效数据展示与交互

前端Vue列表组件 list组件:实现高效数据展示与交互 摘要:在前端开发中,列表组件是展示数据的重要手段。本文将介绍如何使用Vue.js构建一个高效、可复用的列表组件,并探讨其在实际项目中的应用。 效果图如下: 一、引言…...

每日OJ题_哈希表⑤_力扣49. 字母异位词分组

目录 力扣49. 字母异位词分组 解析代码 力扣49. 字母异位词分组 49. 字母异位词分组 难度 中等 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入…...

【Linux】-Linux下的软件商店yum工具介绍(linux和windows互传文件仅仅一个拖拽搞定!!!!)

目录 1.Linux 软件包管理器yum 1.1快速认识yum 1.2 yumz下载方式(如何使用yum进行下载,注意下载一定要是root用户或者白名单用户(可提权)) 1.2.1下载小工具rzsz 1.2.2 rzsz使用 1.2.2查看软件包 1.3软件的卸载 2.yum生…...

320: 鸡兔同笼(python)

题目描述 一个笼子里关了鸡和兔(鸡有2只脚,兔又4只脚,没有例外)。已知笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物? 输入 多组测试数据。第一行是测试数据的组数n&#…...

CentOS 8启动流程

一、BIOS与UEFI BIOS Basic Input Output System的缩写,翻译过来就是“基本输入输出系统”,是一种业界标准的固件接口,第一次出现在1975年,是计算机启动时加载的第一个程序,主要功能是检测和设置计算机硬件,引导系统启动。 UEFI Unified Extensible Firmware interfac…...

js【详解】原型 vs 原型链

原型 每个 class 都有显示原型 prototype每个实例都有隐式原型_proto_实例的_proto_指向对应 class 的 prototype 如下范例: class Student 创建了 实例 xialuo 获取属性 xialuo.name 或执行方法 xialuo.sayhi()时,先在自身属性和方法寻找&#xff0…...

贪心算法: 奶牛做题

5289. 奶牛做题 - AcWing题库 贝茜正在参加一场奶牛智力竞赛。 赛事方给每位选手发放 n 张试卷。 每张试卷包含 k 道题目,编号 1∼k。 已知,不同卷子上的相同编号题目的难度相同,解题时间也相同。 其中,解决第 i 道题(…...

go语言tcp协议实现文件上传

一、客户端实现方案: package mainimport ("fmt""io""net""os" )func sendFile(filePath string, conn net.Conn) {defer conn.Close()// 获取文件名fileInfo, err : os.Stat(filePath)if err ! nil {fmt.Println("E…...

【Unity】利用二进制数据持久化 【练习学习项目/有不足之处欢迎斧正/侵删】

1.为编辑器菜单栏添加新的选项入口 通过Unity提供的MenuItem特性在菜单栏添加选项按钮 特性名:MenuItem 命名空间:UnityEditor 要求:一定是静态方法;新建的这个菜单栏按钮 必须有至少一个斜杠 不然会报错 它不支持只有一个菜单…...

做伦敦银要等怎样的价格与行情?

对于不同的伦敦银投资者来说,合适的入市价格和好的行情机会,标准可能并不一样,因为不同人有不同的交易策略、风险偏好和盈利目标。对于喜欢做趋势跟踪的投资者来说,一波明显而持续的上涨或下跌趋势,可能就是最好的行情…...

SpringBoot多数据源切换 多数据源事务解决方案 二

https://zhuanlan.zhihu.com/p/612825647?utm_id0 https://blog.csdn.net/guzhangyu12345/article/details/108559810 SpringBoot多数据源事务解决方案 https://blog.csdn.net/u013407099/article/details/124526396多数据源切换下保证事务解决方案 https://blog.csdn.net/re…...

ElasticSearch 搜索推荐

Term Suggester "suggest_mode":"missing" missing 默认选项,不返回精准匹配到的分词结果 "suggest_mode":"popular" popular 大于等于搜索词频率的返回 "suggest_mode":"always", 不做任何限制&qu…...

Linux纯命令行查看文本文件

处理超大文本文件时,你可能希望避免一次性加载整个文件,这可能会耗尽内存资源。以下是一些在命令行中查看大文本文件的方法,它们适用于Linux和Unix系统,包括Mac OS X,而在Windows中,你可以使用类似的工具或…...

解决前端项目中Node.js版本不一致导致的依赖安装错误

解决前端项目中Node.js版本不一致导致的依赖安装错误 🌟 前言 欢迎来到我的小天地,这里是我记录技术点滴、分享学习心得的地方。📚 🛠️ 技能清单 编程语言:Java、C、C、Python、Go、前端技术:Jquery、Vue…...

IIoT 与 IoT 之间的区别

物联网世界充满了各式各样的首字母缩写词,从LPWAN到MQTT,再到广为人知的IoT。然而,这仅仅是冰山一角,物联网领域还有更多的变化等待我们去探索,其中就包括IIoT,即工业物联网。那么,你可能会问&a…...

Secs/Gem第十二讲(基于secs4net项目的ChatGpt介绍)

好,那我们进入最关键的一讲—— 第十二讲:完整事件通知流程全景图——CEID 触发到主机接收的全过程 关键词:CEID 事件上报、S6F11 报文、事件触发流程、数据驱动机制、Report Dispatch、主机解析流程 本讲目标 你将彻底理解: 设…...

debian12拒绝海外ip连接

确保 nftables 已安装: Debian 12 默认使用 nftables 作为防火墙框架。检查是否安装: sudo apt update sudo apt install nftables启用并启动 nftables 服务 sudo systemctl enable nftables sudo systemctl start nftables下载maxmind数据库 将文件解…...

Cad 反应器 cad c#二次开发

在 AutoCAD C# 二次开发中,DocumentCollectionEventHandler 是一个委托(delegate),用于处理与 AutoCAD 文档集合(DocumentCollection)相关的事件。它属于 AutoCAD .NET API 的事件处理机制,本质…...

因泰立科技H1X激光雷达:因泰立科技为智慧工业注入新动力

在当今工业领域,精准测量与高效作业是推动产业升级的关键因素。因泰立科技推出的H1X三维轮廓扫描激光雷达,凭借其卓越的性能和广泛的应用场景,正成为智慧工业中不可或缺的高科技装备。 产品简介 H1X三维轮廓扫描激光雷达是因泰立科技基于二维…...

在WPS中如何启用宏VBA wps.vba.exe下载和安装

首先我们点击导航栏中的【工具】,点击左侧 运行宏,根据提示 点击 立即加载。加载卡在50%时间比较长,耐心等待。 关闭wps重新打开后, word和xls表格都可以使用了。 如果电脑无法联网,需要提前下载 WPS VBA插件 WPS VB…...

Python训练打卡Day43

复习日 1.卷积神经网络的基本概念 2.kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 tips:注册kaggle的注意事项 安装插件:Header Editor 然后打开扩展选项: 输入网址:ht…...

隐函数 因变量确定标准

涉及多元隐函数求导法的逻辑本质:当我们对隐函数关系 F ( x , y , z ) 0 F(x, y, z) 0 F(x,y,z)0 使用偏导法求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​时,为什么「偏导」能确定谁是因变量?为什么只有当对 z z z 的偏导 F z…...

Vue作用域插槽

下面,我们来系统的梳理关于 **Vue 作用域插槽 ** 的基本知识点: 一、作用域插槽核心概念 1.1 什么是作用域插槽? 作用域插槽是 Vue 中一种反向数据流机制,允许子组件将数据传递给父组件中的插槽内容。这种模式解决了传统插槽中父组件无法访问子组件内部状态的限制。 1.2…...

Android 集成 Firebase 指南

Firebase 是 Google 提供的一套移动开发平台,包含分析、认证、数据库、消息推送等多种服务。以下是在 Android 应用中集成 Firebase 的详细步骤: 1. 准备工作 安装 Android Studio - 确保使用最新版本 创建或打开 Android 项目 - 项目需要配置正确的包…...

低代码平台前端页面表格字段绑定与后端数据传输交互主要有哪些方式?华为云Astro在这方面有哪些方式?

目录 🔧 一、低代码平台中常见的数据绑定与交互方式 1. 接口绑定(API 调用) 2. 数据源绑定(DataSource) 3. 变量中转(临时变量 / 页面状态) 4. 数据模型绑定(模型驱动) 🌐 二、华为云 Astro 轻应用的实现方式 ✅ 1. 数据源绑定(API服务+API网关) ✅ 2. 变…...