用Node怎样做有模糊查询功能的搜索框?
Admin 2021-09-02 群英技术资讯 412 次浏览
在实际的应用中用搜索框查询时,经常会需要进行模糊查询操作,因此这篇文章就主要给大家分享怎样用Node实现有模糊查询功能的搜索框,下文有实现步骤和代码,感兴趣的朋友就接着往下看吧。
点击导航栏中的搜索图,出现搜索框,从而进行文章的模糊查询
1.blog表
添加外键:
2.nav表
3.type表
4.user表
like.ejs:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>查询</title> <link rel="stylesheet" href="/css/bootstrap.min.css" > <link rel="stylesheet" href="/css/index.css" > <script src="js/jquery-3.3.1.min.js"></script> <script src="js/index.js"></script> </head> <body> <%-include('detachPart/nav.ejs')%> <%-include('detachPart/search.ejs')%> <div class="container"> <div class="row"> <div class="col-lg-9"> <%-include('bigPart/ownblog.ejs')%> </div> <div class="col-lg-3"> <%-include('smallPart/recommend.ejs')%> <%-include('smallPart/rank.ejs')%> <%-include('smallPart/rightimg_1.ejs')%> <%-include('smallPart/information.ejs')%> <%-include('smallPart/mylink.ejs')%> </div> </div> </div> <%-include('detachPart/footer.ejs')%> </body> </html>
search.ejs:
<div class="container searchclose"> <form action="/like" method="GET"> <input name="link" type="text" placeholder="请输入关键字词"> <input type="submit" value="搜索"> <img class="closebtn" src="image/icon/close.png" alt=""> </form> </div>
index.css:
.searchclose{ display: none; position: relative; margin: 0.5rem auto; padding: 1rem 0; text-align: center; background-color: white; } .searchclose input:nth-child(1){ width: 25rem; height: 2.2rem; outline: none; font-size: 0.9rem; padding-left: 0.5rem; border: 1px solid silver; box-sizing: border-box; vertical-align: middle; } .searchclose input:nth-child(2){ display: inline-block; width: 10rem; height: 2.2rem; line-height: 2.2rem; background-color: rgb(41, 41, 41);; color: white; vertical-align: middle; border: 1px solid rgb(41, 41, 41); border-style: none; margin-left: -1rem; } .searchclose img{ position: absolute; top: 0; right: 0; }
index.js:
$(function(){ $(".searchbtn").click(function(){ $(".searchclose").show(); }); $(".closebtn").click(function(){ $(".searchclose").hide(); }); });
connection.js:
var mysql=require("mysql"); var setting=require("./setting"); var connection; var connectionmysql=function(){ connection=mysql.createConnection({ host:setting.host, port:setting.port, user:setting.user, password:setting.pwd, database:setting.base }); } connectionmysql(); exports.select=function(str,callback){ connectionmysql(); connection.query(str,function(err,res){ if(err) throw err; callback(res); connection.end(); }); } exports.find=function(str,params,callback){ connectionmysql(); connection.query(str,params,function(err,res){ if(err) throw err; callback(res); connection.end(); }); }
sql.js:
module.exports={ findTitle:"select * from nav", clickRank:"select id,title from blog order by num desc limit 7", recommendInfo:"select id,title,logo,recommend from blog where recommend=1 limit 8", likeBlog:"select blog.id,title,intro,logo,time,type.typeinfo,user.face from blog,
type,user where blog.type=type.id and blog.face=user.id and title like ? order by time desc" }
promise.js:
var mysql=require("../MySQL/connection"); var sql=require("../MySQL/sql"); module.exports={ findTitle:function(){ return new Promise(function(resolve){ mysql.select(sql.findTitle,function(result){ resolve(JSON.parse(JSON.stringify(result))); }); }) }, clickRank:function(){ return new Promise(function(resolve){ mysql.select(sql.clickRank,function(result){ resolve(JSON.parse(JSON.stringify(result))); }); }); }, recommendInfo:function(){ return new Promise(function(resolve){ mysql.select(sql.recommendInfo,function(result){ resolve(JSON.parse(JSON.stringify(result))); }); }); }, likeBlog:function(msg){ return new Promise(function(resolve){ mysql.find(sql.likeBlog,msg,function(result){ resolve(JSON.parse(JSON.stringify(result))); }); }); } }
router.js:
var promise=require("../MySQL/promise"); var url=require("url"); module.exports=function(app){ // 搜索框进行模糊查找 app.get("/like",function(req,res){ var likeurl=url.parse(req.url,true).query.link; async function getData(){ var res1=await promise.findTitle(); var res5=await promise.clickRank(); var res11=await promise.recommendInfo(); var res21=await promise.likeBlog("%"+likeurl+"%"); var allres={ titleindex:0, navres:res1, rankres:res5, recommendres:res11, blogres:res21 } return allres; } getData().then(function(result){ res.render("like",result); }); }); }
注:like 路由中的blogres:res21和首页中的blogres:res10,所渲染到页面中的数据名称需一致,在此均为 blogres
进行搜索:
搜索结果:
以上就是关于Node做有模糊查询功能的搜索框的代码,有需要的朋友可以借鉴参考,希望对大家学习有帮助,想要了解更多请搜索群英网络以前的文章或继续浏览其他相关的文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章给大家带来了关于JavaScript中单线程和异步的相关知识,希望对大家有帮助。
这篇文章主要介绍了vue之elementUi的el-select同时获取value和label的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
本篇文章给大家介绍一下javascript比较运算符(“===”和“==”)的匹配规则,以及if()条件的判断结果,希望对大家有所帮助!
因为现在vue的流行,vue的各种插件都出来了,我们公司也是使用vue做项目,那么应该如何封装,本文就介绍一下如何封装,感兴趣的可以了解一下
这篇文章主要介绍了vue项目中 jsconfig.json是什么,本文仅仅简单介绍了 jsconfig .json 的一些基本配置,而 jsconfig .json提供了大量能使我们快速便捷提高代码效率的方法,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008