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 mouseover、mouseout停止事件冒泡的解决方案
Apr 07 Javascript
javascript 模拟点击广告
Jan 02 Javascript
jquery实现经典的淡入淡出选项卡效果代码
Sep 22 Javascript
javascript HTML5文件上传FileReader API
Mar 27 Javascript
input框中的name和id的区别
Nov 16 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
Nov 21 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
Apr 13 Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 Javascript
小程序自定义日历效果
Dec 29 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
layui使用templet格式化表格数据的方法
Sep 16 Javascript
vue将文件/图片批量打包下载zip的教程
Oct 21 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 第二节 数据类型之转换
2012/04/28 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
Date对象格式化函数代码
2010/07/17 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
详解vue-cli3使用
2018/08/14 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
详解KMP算法以及python如何实现
2020/09/18 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
如何选择使用结构还是类
2014/05/30 面试题
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
教育课题研究自我鉴定范文
2013/12/28 职场文书
2014年端午节活动方案
2014/03/11 职场文书
中国好声音华少广告词
2014/03/17 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
运动会方队口号
2014/06/07 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
护士自荐信怎么写
2015/03/06 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python