全栈项目|小书架|服务器端-NodeJS+Koa2 实现搜索功能
搜索功能会包含:热搜、搜索列表。
热搜功能在电商的搜索中经常看到,热搜数据的来源有两种
- 用户真实的搜索数据,根据算法进行排序
- 人为推送的数据
想想微博热搜是可以买的就知道热搜功能多么重要了。
我采用第二种方式简单实现。
第一种方式由于我目前还未实现,没办法介绍。
大伙儿可以参考下面几篇文章介绍热搜实现:
- Redis简单案例(一) 网站搜索的热搜词
- Redis 与搜索热词推荐
- 热搜算法是怎样实现的,具体些,求解?
热搜
前端页面效果图如下:
前端页面热搜只显示图书名称。因此表示一本图书只要返回 图书id
,图书名称 即可。
为了方便实现,直接在路由中返回了JSON
数据,省略了查询数据库的步骤,伪代码如下:
// 获取热搜书籍
router.get('/search/hot', async ctx => {let hotBooks= [{"id":10001,"name":"深入浅出Node.js"},{"id":10003,"name":"解忧杂货店"},{"id":10005,"name":"安徒生童话故事集"}]ctx.body = JSON.stringify(hotBooks)
})
以上就是热搜的实现,在客户端调用:http://192.168.**.***:3000/v1/book/search/hot
,即可。
搜索列表
前端页面效果图如下:
前端页面的搜索结果通过卡片样式展示图书信息。
图书信息和首页的图书信息基本一致,书籍的搜索功能就是模糊查询数据库中book
表里面的相关书籍。
ps:价格样式是为了测试前端的布局,数据库中没有真实数据。
首先肯定也是定义搜索接口,搜索接口中定义了三个参数,分别是:搜索关键字,搜索页数,每页数量,后两个参数作用是分页返回数据。
router.get('/search', async ctx => {const v =await new SearchValidator().validate(ctx)const books = await Book.getSearchBooks(v.get('query.q'), v.get('query.start'), v.get('query.count'))ctx.body = books
})
可以看到路由中的查询数据库的方法是getSearchBooks
,具体实现如下:
static async getSearchBooks(q, start, count) {const books =await Book.findAll({where: {bkname: {[Op.like]: `%${q}%`}},offset: start, limit: count})if (!books) {throw new global.errs.NotFound("没有找到相关数据",100010)}return books}
最后在客户端调用:http://192.168.**.***:3000/v1/book/search/?q=node&start=0&count=20
,通过模糊搜索之后有数据则返回搜索数据,没有数据则提示 "没有找到相关数据"
以上就是本次的介绍。
扫码关注公众号,轻撩即可。
全栈项目|小书架|服务器端-NodeJS+Koa2 实现搜索功能相关推荐
- 全栈项目|小书架|微信小程序-实现搜索功能
效果图 上图是小程序端实现的搜索功能效果图. 从图中可以看出点击首页搜索按钮即可进入搜索页面. 布局样式是:搜索框 + 热搜内容 + 搜索列表. 搜索框使用 lin-ui 中的 Searchbar组件 ...
- 全栈项目|小书架|微信小程序-首页水平轮播实现
首页效果 首页功能主要有 搜索(下篇文章介绍) 图书列表 图书列表 分析一波: 列表是水平滑动 点击列表会有按压效果:布局整体缩小 每个布局的信息从上到下排列分别是:图片.书名.作者.出版社 每个布局 ...
- 全栈项目|小书架|微信小程序-书籍详情功能实现
效果图 实现分析 从效果图上分析,书籍详情是通过点击首页的item后进入. 进入详情页之后页面顶部显示书籍的相关信息,同时判断用户是否登录,未登录则弹出一个授权登录窗口. 点击登录之后即可加载出用户评 ...
- 全栈项目|小书架|微信小程序-登录回调及获取点赞列表功能
效果图 这一节介绍,登录回调 以及 喜欢列表 的实现. 登录回调:这里是指在获取登录完成之后,再进行下一步的操作. 比如效果图中我的页面,默认是未登录状态,积分和喜欢列表的数量都没有获取到. 而登录成 ...
- 零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)—项目概述篇(一)
零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)-项目概述篇(一) 一.项目开发总体框架 二.项目开发流程 三.项目技术选型
- 还不会小程序开发?适用于新手、前端、后端、全栈的小程序开发保姆级教程!
2017年,那个男人微信之父"龙哥",在公开课上提出"小程序".那时大家都还在享受移动互联网所带来的便捷体验,对于微信这个庞然大物所倡导的新物种显然是有点不知所 ...
- 面试超尴尬瞬间:我从没参与过一个全栈项目
写简历是找工作的第一步,第二步就是面试,那么简历就是一块敲开面试大门的敲门砖,所以写简历的根本目的就是要体现出你的专业水平和项目经验,那么什么样的简历能够快速的抓住HR的眼球呢?作为前端工程师的简历来 ...
- 王者荣耀全栈项目部署到阿里云服务器笔记
王者荣耀全栈项目部署到阿里云服务器笔记 原创Charles_GX 最后发布于2020-03-27 01:27:00 阅读数 177 收藏 展开 王者荣耀全栈项目部署到阿里云服务器笔记 学习的项目来自 ...
- vue商城项目源码_CMS全栈项目之Vue和React篇(下)(含源码)
今天给大家介绍的主要是我们全栈CMS系统的未讲解完的后台部分和前台部分,如果对项目背景和技术栈不太了解,可以查看我之前的文章 基于nodeJS从0到1实现一个CMS全栈项目(上) 基于nodeJS从0 ...
最新文章
- Yolo-v2 Visual Studio 2015安装时报错Team Explorer for Microsoft Visual Studio 2015解决办法
- LTE Module User Documentation(翻译5)——Mobility Model with Buildings
- Python学习笔记之类(一)
- Redis集成到Maven工程(Jedis客户端)
- (转)对各种初始化函数的理解:OnInitDialog、InitInstance、InitApplication函数的理解...
- 插入始终是1_插入式电磁流量计的安装说明
- SpringCloud Greenwich版本集成OAuth2.0
- A Neural Algorithm of Artistic Style : Neural Style Transfer with Eager Executon
- android 计时器 开始 停止 继续和暂停
- 十进制 二进制 十六进制 八进制
- AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣
- POI 导出Excel
- python生产实战 python 闭包之庖丁解牛篇
- 手机不小心把计算机隐藏了怎么恢复出厂设置,图标隐藏了怎么弄出来(手机图标隐藏了怎么恢复)...
- 基于freemarker ,xdocreport生成word,pdf
- 卸载antivirus(AVG)教程
- Python快速入门 满满都是干货!
- 华为linux改ip地址,ubuntu9.10校园网上网配置详细教程(华为h3c,mac地址绑定)
- php5.6上部署ecshop,Fecshop 环境部署 以及 安装步骤
- Pytorch基础-07-自动编码器
热门文章
- 微擎学习随记_常用功能实现
- 《How to solve it》笔记--1.浅谈|《在教室里》
- 2013美国火爆科幻片【僵尸世界大战】清晰版下载
- Datatables 自定义按钮
- 天命2服务器维护时间,2月5日服务器例行维护公告(已完成)
- 重置计算机共享配置文件,如何设置局域网共享,小编教你电脑如何设置局域网共享文件夹...
- When to use “-er,” “-or,” or “-ar” at the end of a word.
- C语言如何解释abc
- 2020年全球物联网市场规模将达1.9万亿美元
- js实现gbk编码转utf字符串