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脚本调试方法小结
Nov 24 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
Dec 07 Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 Javascript
javascript鼠标滑过显示二级菜单特效
Nov 18 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
jQuery EasyUI Panel面板组件使用详解
Feb 28 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
vue实现nav导航栏的方法
Dec 13 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
微信小程序实现身份证取景框拍摄
Sep 09 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
zend framework中使用memcache的方法
2016/03/04 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python入门篇之对象类型
2014/10/17 Python
python计算文本文件行数的方法
2015/07/06 Python
python 显示数组全部元素的方法
2018/04/19 Python
python字符串string的内置方法实例详解
2018/05/14 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
Python中如何引入第三方模块
2020/05/27 Python
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
大学生自我评价范文分享
2014/02/21 职场文书
消防安全承诺书
2014/05/22 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
Python Numpy库的超详细教程
2022/04/06 Python