经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Node.js » 查看文章
Node实现搜索框进行模糊查询
来源:jb51  时间:2021/6/28 12:41:41  对本文有异议

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

一、需求

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

二、建表

1.blog表

添加外键:

2.nav表

3.type表

4.user表

三、页面及样式

like.ejs:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>查询</title>
  7. <link rel="stylesheet" href="/css/bootstrap.min.css" >
  8. <link rel="stylesheet" href="/css/index.css" >
  9. <script src="js/jquery-3.3.1.min.js"></script>
  10. <script src="js/index.js"></script>
  11. </head>
  12. <body>
  13. <%-include('detachPart/nav.ejs')%>
  14. <%-include('detachPart/search.ejs')%>
  15. <div class="container">
  16. <div class="row">
  17. <div class="col-lg-9">
  18. <%-include('bigPart/ownblog.ejs')%>
  19. </div>
  20. <div class="col-lg-3">
  21. <%-include('smallPart/recommend.ejs')%>
  22. <%-include('smallPart/rank.ejs')%>
  23. <%-include('smallPart/rightimg_1.ejs')%>
  24. <%-include('smallPart/information.ejs')%>
  25. <%-include('smallPart/mylink.ejs')%>
  26. </div>
  27. </div>
  28. </div>
  29. <%-include('detachPart/footer.ejs')%>
  30. </body>
  31. </html>

search.ejs:

  1. <div class="container searchclose">
  2. <form action="/like" method="GET">
  3. <input name="link" type="text" placeholder="请输入关键字词">
  4. <input type="submit" value="搜索">
  5. <img class="closebtn" src="image/icon/close.png" alt="">
  6. </form>
  7. </div>

index.css:

  1. .searchclose{
  2. display: none;
  3. position: relative;
  4. margin: 0.5rem auto;
  5. padding: 1rem 0;
  6. text-align: center;
  7. background-color: white;
  8. }
  9. .searchclose input:nth-child(1){
  10. width: 25rem;
  11. height: 2.2rem;
  12. outline: none;
  13. font-size: 0.9rem;
  14. padding-left: 0.5rem;
  15. border: 1px solid silver;
  16. box-sizing: border-box;
  17. vertical-align: middle;
  18. }
  19. .searchclose input:nth-child(2){
  20. display: inline-block;
  21. width: 10rem;
  22. height: 2.2rem;
  23. line-height: 2.2rem;
  24. background-color: rgb(41, 41, 41);;
  25. color: white;
  26. vertical-align: middle;
  27. border: 1px solid rgb(41, 41, 41);
  28. border-style: none;
  29. margin-left: -1rem;
  30. }
  31. .searchclose img{
  32. position: absolute;
  33. top: 0;
  34. right: 0;
  35. }

index.js:

  1. $(function(){
  2. $(".searchbtn").click(function(){
  3. $(".searchclose").show();
  4. });
  5. $(".closebtn").click(function(){
  6. $(".searchclose").hide();
  7. });
  8. });

四、MySQL数据

connection.js:

  1. var mysql=require("mysql");
  2. var setting=require("./setting");
  3. var connection;
  4. var connectionmysql=function(){
  5. connection=mysql.createConnection({
  6. host:setting.host,
  7. port:setting.port,
  8. user:setting.user,
  9. password:setting.pwd,
  10. database:setting.base
  11. });
  12. }
  13. connectionmysql();
  14. exports.select=function(str,callback){
  15. connectionmysql();
  16. connection.query(str,function(err,res){
  17. if(err) throw err;
  18. callback(res);
  19. connection.end();
  20. });
  21. }
  22. exports.find=function(str,params,callback){
  23. connectionmysql();
  24. connection.query(str,params,function(err,res){
  25. if(err) throw err;
  26. callback(res);
  27. connection.end();
  28. });
  29. }

sql.js:

  1. module.exports={
  2. findTitle:"select * from nav",
  3. clickRank:"select id,title from blog order by num desc limit 7",
  4. recommendInfo:"select id,title,logo,recommend from blog where recommend=1 limit 8",
  5. 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"
  6. }

promise.js:

  1. var mysql=require("../MySQL/connection");
  2. var sql=require("../MySQL/sql");
  3. module.exports={
  4. findTitle:function(){
  5. return new Promise(function(resolve){
  6. mysql.select(sql.findTitle,function(result){
  7. resolve(JSON.parse(JSON.stringify(result)));
  8. });
  9. })
  10. },
  11. clickRank:function(){
  12. return new Promise(function(resolve){
  13. mysql.select(sql.clickRank,function(result){
  14. resolve(JSON.parse(JSON.stringify(result)));
  15. });
  16. });
  17. },
  18. recommendInfo:function(){
  19. return new Promise(function(resolve){
  20. mysql.select(sql.recommendInfo,function(result){
  21. resolve(JSON.parse(JSON.stringify(result)));
  22. });
  23. });
  24. },
  25. likeBlog:function(msg){
  26. return new Promise(function(resolve){
  27. mysql.find(sql.likeBlog,msg,function(result){
  28. resolve(JSON.parse(JSON.stringify(result)));
  29. });
  30. });
  31. }
  32. }

router.js:

  1. var promise=require("../MySQL/promise");
  2. var url=require("url");
  3. module.exports=function(app){
  4. // 搜索框进行模糊查找
  5. app.get("/like",function(req,res){
  6. var likeurl=url.parse(req.url,true).query.link;
  7. async function getData(){
  8. var res1=await promise.findTitle();
  9. var res5=await promise.clickRank();
  10. var res11=await promise.recommendInfo();
  11. var res21=await promise.likeBlog("%"+likeurl+"%");
  12. var allres={
  13. titleindex:0,
  14. navres:res1,
  15. rankres:res5,
  16. recommendres:res11,
  17. blogres:res21
  18. }
  19. return allres;
  20. }
  21. getData().then(function(result){
  22. res.render("like",result);
  23. });
  24. });
  25. }

注:like 路由中的blogres:res21和首页中的blogres:res10,所渲染到页面中的数据名称需一致,在此均为 blogres

五、效果展示

进行搜索:

搜索结果:

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号