thinkjs 修改where預設條件為or

2022-01-21 20:26:04 字數 1178 閱讀 4281

寫之前,得先反思一下:總以為大神同事的高冷是一種與大家格格不入的節奏,可是當自己遇到的問題難以解決的時候,大神同事一下子就讓問題迎刃而解,於是,滿眼的敬佩之感:一定努力當乙個像大神同事一樣的programmer!

進入正題:

一直以來工作中,使用的都是nodejs中的thinkjs框架,基本上做的也是後台 資料的增刪改查,類似的流程,似乎讓自己忽略了其中的一些小秘密,於是今天就碰見了這個坑:

這是在model中寫的where查詢條件,官網是這樣子解釋的:

model.where(where)•

where where

條件 •

return

設定 where

查詢條件。可以通過屬性 _logic 設定邏輯,預設為 and。可以通過屬性 _complex 設定復合查詢。

注:1、以下示例不適合 mongo model,mongo 中設定 where 條件請見 model.mongo 裡的 where 條件設定。2、where 條件中的值需要在 logic 裡做資料校驗,否則可能會有漏洞。

意思也就是像前面的條件中,它只會預設執行所有and條件,即並列在一起執行,但是我的實際想要的需求卻是框中的三個條件並非and而是or查詢,在前台頁面中它只是乙個名稱輸入框,輸入的值(資料庫對應name欄位)傳到後台,這個值便要進行三項查詢:name,pinyin,zimu,可是上面的寫法,它永遠都不會進入到第二個以及的三個條件,自己看了很長時間,最終是知道了sql語句執行有誤,但是得把where預設的and條件隨意的轉化成自己想要的or選擇條件,就有點小困難了。從官網中,我知道了where有個方法可以設定復合查詢,但是_logic的資料結構是個物件,對於這個寫法,自己試了好多種,或許真的是導航太淺,

紅色的框裡是自己試了好多遍的錯誤案例,而綠色框中是經過大神同事指點過的完美條件,那一瞬間,真的對自己無語了。差一點的失誤也是不成功的!

實際上,logic的用法是這樣的,後面的引數是乙個物件:

where 條件為空時不走where條件

mysql 若想當where 條件為空時不走where條件,where可以整個為空,但裡面的如where is status sta tus 的 status 的 status 的status不能為空,不然會查詢出status為空的資料,記錄一下。where sta demandstatus if ...

關於MYSQL查詢時WHERE條件值為數字的問題

本來我需要查詢 select from demo where status 1 杯具的是,我想要的結果沒有出來,找了一下問題的原因 我資料庫中status欄位的型別為enum,不是數字型別的原因?select from demo where status 1 這樣就可以了,我一直以為是一樣的呢,以為...

修改預設桌布為動態桌布

在frameworks base core res res values目錄找到config.xml檔案,最後一行有定義 null 將其修改為對應的live wall 的啟動component即可,如要把預設桌布設定為2.1自帶的galaxy,這樣寫即可 com.android.wall com.a...