寫在前面
做小程序的開發已經有很長一段時間了,雖然是在寫,但是一直沒有去沉淀過,沒有去記錄過踩過的坑,這篇博客作為一個導航,記錄一下我所遇到的坑(主要還是雲函數的數據庫查詢)
隨着不斷的更新,小程序的功能也是越來越完善,想當初,剛玩小程序雲開發的時候,雲開發提供的一個查詢環境還不支持$(Aggregate)
、_(Command)
,以及高級的查詢方法例如lookup
,在現在也是都被修復了。。
寫這么一系列博客,也有一個原因,剛玩微信雲開發的時候看小程序雲開發的文檔解釋的超級暈的。。。你看那個Aggregate聚合...一時間無法理解....(雖然后來看就好多了)
咳,閑扯就這么多,本文章假定你已經能夠搭建一個雲函數、並且跑過一遍完全沒有問題(一般來說不會有問題的,創建的時候模板里的把該配置的變量都配置了...)
...理論上可以在微信小程序的代碼里直接寫查詢....小程序貌似默認有這些方法的(具體還沒嘗試,如果可以,未來ts分層的時候,dao層就可以直接放查詢了2333)
然后...關於小程序的版本更新,當時做了一次代碼重構,Node版本是8.9,后來因為外部需要雲開發的數據,又新寫了一組方法,node版本10.15。兩次的版本差距還是蠻大的(還是因為兩次用的查詢不一樣...具體未來說明)
正文
在了解高級查詢之前,我基本上都是靠多次查詢,大部分業務的處理都在
Service
層中處理的,我開始涉及高級查詢的契機是在一個業務的需求,要獲取一個時間范圍內的數據,而我存儲的時間格式是YYYY-mm-dd
,這意味着只有兩種方式完成查詢,一種是正則匹配,匹配年月(2020\-07
),或者是對查詢的數據進行預處理,轉換成另一種有規律的格式,來實現復雜的查詢,這個方式會在后面說起。
對於基本的內容,我抽象出了一套方法,可以適用於大部分的增刪改,非常方便(有點類似於mybatis
提供的一套基本的查詢方案,不過沒有jpa辣么智能)
- 雲開發數據庫的基本查詢(使用雲函數演示)
- 雲開發數據庫的高級查詢(使用雲函數演示)
- 雲開發使用nodejs(不做具體介紹,只說有這么個東西,細心的你大概已經發現了,包括雲函數的查詢操作都是引用一個微信的sdk(
wx-server-sdk
)完成的)