Node实现搜索框进行模糊查询


Posted in Javascript onJune 28, 2021

本文实例为大家分享了Node实现搜索框进行模糊查询的具体代码,供大家参考,具体内容如下

一、需求

点击导航栏中的搜索图,出现搜索框,从而进行文章的模糊查询

二、建表

1.blog表

Node实现搜索框进行模糊查询

添加外键:

Node实现搜索框进行模糊查询

2.nav表

Node实现搜索框进行模糊查询

3.type表

Node实现搜索框进行模糊查询

4.user表

Node实现搜索框进行模糊查询

三、页面及样式

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();
    });
});

四、MySQL数据

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实现搜索框进行模糊查询

搜索结果:

Node实现搜索框进行模糊查询

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 不能释放内存.
Sep 07 Javascript
jquery解析xml字符串示例分享
Mar 25 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
详细分析使用AngularJS编程中提交表单的方式
Jun 19 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
jQuery图片渐变特效的简单实现
Jun 25 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
Angular中的$watch、$watchGroup、$watchCollection
Jun 25 Javascript
浅谈Vue2.0父子组件间事件派发机制
Jan 08 Javascript
微信小程序顶部导航栏滑动tab效果
Jan 28 Javascript
原生js实现贪吃蛇游戏
Oct 26 Javascript
React + Threejs + Swiper 实现全景图效果的完整代码
Vue实现tab导航栏并支持左右滑动功能
React列表栏及购物车组件使用详解
React如何创建组件
Jun 27 #Javascript
Vue3.0写自定义指令的简单步骤记录
关于JavaScript回调函数的深入理解
Jun 27 #Javascript
vue.js Router中嵌套路由的实用示例
Jun 27 #Vue.js
You might like
利用PHP创建动态图像
2006/10/09 PHP
MYSQL环境变量设置方法
2007/01/15 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
医学专业大学生求职的自我评价
2013/11/27 职场文书
人事主管岗位职责
2014/01/30 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
预备党员公开承诺书
2014/05/28 职场文书
庆六一活动总结
2014/08/29 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书