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实现无刷新更新数据的详细步骤 asp
Dec 26 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
Javascript中3种实现继承的方法和代码实例
Aug 12 Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 Javascript
jQuery插件实现多级联动菜单效果
Dec 01 Javascript
浅谈时钟的生成(js手写简洁代码)
Aug 20 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
Jul 18 Javascript
Vue仿手机qq的实例代码(demo)
Sep 08 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
微信小程序框架wepy之动态控制类名
Sep 14 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php 使用array函数实现分页
2015/02/13 PHP
php微信开发之关注事件
2018/06/14 PHP
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
详解node.js 事件循环
2020/07/22 Javascript
python返回昨天日期的方法
2015/05/13 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
详解Python学习之安装pandas
2019/04/16 Python
Python argparse模块应用实例解析
2019/11/15 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
python定义类的简单用法
2020/07/24 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
大学生村官心得体会范文
2014/01/04 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
乔迁之喜主持词
2014/03/27 职场文书
开发房地产协议书
2014/09/14 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
运动员加油词
2015/07/18 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python
Python学习之时间包使用教程详解
2022/03/21 Python