最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nodejs使用SQL模糊查詢的過程詳解

 更新時(shí)間:2024年07月23日 08:29:08   作者:smileNicky  
最近在改一個(gè)比較久的項(xiàng)目,是使用nodejs寫的,但是對(duì)于長期寫java的后端開發(fā)來說,還是有點(diǎn)難維護(hù),不過不改bug的話,就需要重新開發(fā),所以本文介紹了NodeJs如何使用SQL模糊查詢,需要的朋友可以參考下

最近在改一個(gè)比較久的項(xiàng)目,是使用nodejs寫的,但是對(duì)于長期寫java的后端開發(fā)來說,還是有點(diǎn)難維護(hù),不過不改bug的話,就需要重新開發(fā),所以只能慢慢看nodejs代碼,測(cè)試人員提了一個(gè)需要支持模糊查詢的bug,如果是java寫的,可以馬上改好,因?yàn)椴皇煜odejs代碼,還是改了一兩個(gè)小時(shí),邊找資料,邊改,記錄下來,方便回顧

實(shí)驗(yàn)環(huán)境

  • VS Code

  • Mysql 8.0.26

修改過程

最開始直接這樣改

exports.queryWordsList = function (req, res, next) {
  var Words = DB.get('Words')
  var params = req.body
  var page = new Page({
    pageNum: params.pageNum || 1,
    pageSize: params.pageSize || 10,
  })
  delete params.pageNum
  delete params.pageSize
  var sql = `select t.id,t.name,t.words, t.type,t.tip_msg,t.replace_str,t.desc,
    UNIX_TIMESTAMP(t.create_time)*1000 as create_time,
    UNIX_TIMESTAMP(t.modify_time)*1000 as modify_time
    from t_words t`
  if (params.word) {
    sql = `${sql} WHERE name like '%?%' order by t.modify_time desc`
  } else {
    sql = `${sql} order by t.modify_time desc`
  }
  Words.queryPageBySql(sql,page,[params.word],function (err, result) {
      if (err) {
        res.json({ rescode: '10001', err: err })
        return
      }
      var list = page.list
      res.json({ rescode: '10000', data: result })
    }
  )
}

運(yùn)行后,發(fā)現(xiàn)報(bào)錯(cuò)

{
    "rescode": "10001",
    "err": {
        "code": "ER_PARSE_ERROR",
        "errno": 1064,
        "sqlMessage": "You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '其'%' order by t.modify_time desc ) T' at line 4",
        "sqlState": "42000",
        "index": 0,
        "sql": "select count(*) as count from ( select t.id,t.name,t.type,t.tip_msg,t.replace_str,t.desc,\n    UNIX_TIMESTAMP(t.create_time)*1000 as create_time,\n    UNIX_TIMESTAMP(t.modify_time)*1000 as modify_time\n    from t_words t WHERE name like '%'其'%' order by t.modify_time desc ) T"
    },
    "status": false,
    "req_id": "1713148803682.74"
}

所以,修改一下,傳一個(gè)參數(shù)進(jìn)去

exports.queryWordsList = function (req, res, next) {
  var Words = DB.get('Words')
  var params = req.body
  var page = new Page({
    pageNum: params.pageNum || 1,
    pageSize: params.pageSize || 10,
  })
  delete params.pageNum
  delete params.pageSize
  var sql = `select t.id,t.name,t.type,t.tip_msg,t.replace_str,t.desc,
    UNIX_TIMESTAMP(t.create_time)*1000 as create_time,
    UNIX_TIMESTAMP(t.modify_time)*1000 as modify_time
    from t_words t`
  if (params.word) {
    sql = `${sql} WHERE name like ? order by t.modify_time desc`
  } else {
    sql = `${sql} order by t.modify_time desc`
  }
  var queryWord = "%" + params.word + "%";
  Words.queryPageBySql(sql,page,[queryWord],function (err, result) {
      if (err) {
        res.json({ rescode: '10001', err: err })
        return
      }
      var list = page.list
      res.json({ rescode: '10000', data: result })
    }
  )
}

ok,經(jīng)過測(cè)試,可以查詢,不過測(cè)試,對(duì)于傳入"其%"這樣的查詢字符,sql是直接當(dāng)成關(guān)鍵字“其”進(jìn)行模糊查詢的,直接忽略了特殊符號(hào)“%”,所以要支持這種特殊符號(hào)查詢,可以加上轉(zhuǎn)義字符,暫時(shí)這樣處理

sql = `${sql} WHERE name LIKE ? ESCAPE '\\' ORDER BY t.modify_time DESC`;
var queryWord = "%" + params.word.replace(/\\/g, "\\\\").replace(/%/g, "\\%") + "%";

到此這篇關(guān)于Nodejs使用SQL模糊查詢的過程詳解的文章就介紹到這了,更多相關(guān)Nodejs SQL模糊查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • electron demo項(xiàng)目npm install安裝失敗的解決方法

    electron demo項(xiàng)目npm install安裝失敗的解決方法

    下面小編就為大家分享一篇electron demo項(xiàng)目npm install安裝失敗的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • node.js中的fs.fstatSync方法使用說明

    node.js中的fs.fstatSync方法使用說明

    這篇文章主要介紹了node.js中的fs.fstatSync方法使用說明,本文介紹了fs.fstatSync的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 在Linux系統(tǒng)上升級(jí)Node.js遇到GLIBC依賴問題的多種解決方案

    在Linux系統(tǒng)上升級(jí)Node.js遇到GLIBC依賴問題的多種解決方案

    在現(xiàn)代 Web 開發(fā)和 DevOps 實(shí)踐中,Node.js 是一個(gè)不可或缺的工具,在升級(jí) Node.js 版本時(shí),尤其是在較舊的 Linux 系統(tǒng)上,可能會(huì)遇到一些依賴庫不兼容的問題,特別是與 GLIBC 和 GLIBCXX 相關(guān)的錯(cuò)誤,本文將詳細(xì)介紹如何解決這個(gè)依賴問題,需要的朋友可以參考下
    2025-01-01
  • 如何用nodejs搭建代理服務(wù)器

    如何用nodejs搭建代理服務(wù)器

    這篇文章主要介紹了如何用nodejs搭建代理服務(wù)器,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 測(cè)試驅(qū)動(dòng)ChatGPT編程示例詳解

    測(cè)試驅(qū)動(dòng)ChatGPT編程示例詳解

    這篇文章主要為大家介紹了測(cè)試驅(qū)動(dòng)ChatGPT編程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Node.js中的EventEmitter類使用小結(jié)

    Node.js中的EventEmitter類使用小結(jié)

    EventEmitter 是 Node.js 中的一個(gè)核心模塊,它提供了一種實(shí)現(xiàn)事件驅(qū)動(dòng)編程的機(jī)制,它是一個(gè)基于觀察者模式的類,用于在應(yīng)用程序中處理事件和觸發(fā)事件,這篇文章主要介紹了Node.js中的EventEmitter類介紹,需要的朋友可以參考下
    2023-12-12
  • nodejs簡單實(shí)現(xiàn)操作arduino

    nodejs簡單實(shí)現(xiàn)操作arduino

    本文給大家分享的是使用nodejs來驅(qū)動(dòng)arduino,主要是基于cylonjs 和 gort,有需要的小伙伴可以參考下
    2016-09-09
  • 基于NodeJS的前后端分離的思考與實(shí)踐(六)Nginx + Node.js + Java 的軟件棧部署實(shí)踐

    基于NodeJS的前后端分離的思考與實(shí)踐(六)Nginx + Node.js + Java 的軟件棧部署實(shí)踐

    關(guān)于前后端分享的思考,我們已經(jīng)有五篇文章闡述思路與設(shè)計(jì)。本文介紹淘寶網(wǎng)收藏夾將 Node.js 引入傳統(tǒng)技術(shù)棧的具體實(shí)踐。
    2014-09-09
  • Node.js + Redis Sorted Set實(shí)現(xiàn)任務(wù)隊(duì)列

    Node.js + Redis Sorted Set實(shí)現(xiàn)任務(wù)隊(duì)列

    本文給大家分享的是使用Node.js + Redis Sorted Set實(shí)現(xiàn)任務(wù)隊(duì)列的方法示例,非常的實(shí)用,有需要的小伙伴可以參考下
    2016-09-09
  • 基于Node.js實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳的完整方案

    基于Node.js實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳的完整方案

    本文介紹了Vue前端和Node.js后端實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳的方法,前端通過分片上傳、計(jì)算文件哈希、記錄已上傳分片索引實(shí)現(xiàn)斷點(diǎn)續(xù)傳;后端提供檢查和上傳分片、合并文件的接口,通過并發(fā)控制、錯(cuò)誤重試等技術(shù)提高上傳效率和穩(wěn)定性,需要的朋友可以參考下
    2026-04-04

最新評(píng)論

安图县| 永靖县| 靖宇县| 财经| 新民市| 合川市| 乌鲁木齐市| 惠州市| 乌鲁木齐县| 富阳市| 屯昌县| 星子县| 仁布县| 湟中县| 澳门| 米易县| 赤壁市| 大田县| 罗田县| 磐安县| 克什克腾旗| 东安县| 于都县| 苍山县| 屯留县| 宜昌市| 庆云县| 广元市| 罗源县| 大宁县| 政和县| 迁西县| 西安市| 洛阳市| 清原| 扶绥县| 怀仁县| 惠安县| 清涧县| 枞阳县| 北碚区|