小程序云開發(fā)入門第五章,云數(shù)據(jù)庫(kù)的講解
5-1,在數(shù)據(jù)庫(kù)里新建集合(數(shù)據(jù)表)
我們這里以新建一個(gè)商品列表為例
5-2,數(shù)據(jù)庫(kù)權(quán)限管理
要想讓用戶查詢到我們創(chuàng)建的商品數(shù)據(jù),需要把權(quán)限改為所有用戶可讀
5-3,數(shù)據(jù)庫(kù)的增刪改查
5-3-1,查詢 get()
傳統(tǒng)寫法
ES6簡(jiǎn)潔寫法
推薦第二種寫法
5-3-2,條件查詢 where()
5-3-3,查詢單條數(shù)據(jù)doc()
doc是用來(lái)查詢單條數(shù)據(jù)的。比如商品詳情頁(yè)。
doc里面用到的參數(shù)就是我們數(shù)據(jù)里的_id字段
5-3-4,添加數(shù)據(jù) add()
通過(guò)add可以實(shí)現(xiàn)數(shù)據(jù)的添加,
5-3-5,更新數(shù)據(jù)update()
修改數(shù)據(jù)庫(kù)里已存在的數(shù)據(jù),結(jié)合doc進(jìn)行修改單條數(shù)據(jù)
5-3-6,刪除數(shù)據(jù)remove()
刪除數(shù)據(jù),結(jié)合doc刪除單條數(shù)據(jù)
5-4-1 列表跳詳情 data-
1,在wxml里定義data- 要綁定的數(shù)據(jù)
2, 在js頁(yè)面里的點(diǎn)擊方法里拿到綁定的數(shù)據(jù)
比如打印結(jié)果如下
5-4-2,列表跳詳情并攜帶商品id
1,列表跳頁(yè)到詳情頁(yè)
2,拿到列表跳頁(yè)時(shí)攜帶的id數(shù)據(jù)
5-4-3,查詢商品列表
5-4-4,添加商品并刷新商品列表
5-4-5,更新商品數(shù)據(jù)
用戶輸入新價(jià)格,調(diào)用update方法進(jìn)行更新數(shù)據(jù)
我們更新成功的時(shí)候,會(huì)有如下所示的日志打印。
只有stats里的updated是1的時(shí)候,才代表成功的更新了一條數(shù)據(jù)。
如果這條商品不是你創(chuàng)建的,當(dāng)你對(duì)這條商品做更新操作時(shí),打印的updated就是0。
這個(gè)時(shí)候代表沒(méi)有更新成功。這是因?yàn)椴僮鲿r(shí)的權(quán)限問(wèn)題,要解決這個(gè)問(wèn)題,就要借助云函數(shù)了,這里我們先放在這里,在后面云函數(shù)章節(jié)會(huì)做具體講解。
5-4-6,彈窗提示確認(rèn)是否刪除
用戶刪除數(shù)據(jù)是一個(gè)危險(xiǎn)操作,所以操作之前最好給用戶一個(gè)友好提示。
官方彈窗文檔:https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showModal.html
5-4-7,刪除商品
5-4-8,更新和刪除時(shí)的權(quán)限問(wèn)題
如果這條商品不是你創(chuàng)建的,當(dāng)你對(duì)這條商品做刪除或者更新操作時(shí),雖然也會(huì)返回成功,但是可以看到我們更新或者刪除的條數(shù)是0。
其實(shí)這個(gè)時(shí)候也意味著沒(méi)有更新或者刪除成功,這里是因?yàn)椴僮鳈?quán)限的問(wèn)題,因?yàn)檫@條數(shù)據(jù)不是你創(chuàng)建的。所以你只能對(duì)這條數(shù)據(jù)做查詢操作,而不能做修改和刪除操作。要想解決這個(gè)問(wèn)題,就要借助云函數(shù)了。后面云函數(shù)講解的部分,我會(huì)做具體講解的。
我們還是先接著學(xué)習(xí)數(shù)據(jù)庫(kù)操作的高級(jí)操作
5-6,常用快捷鍵
我們?cè)陂_發(fā)時(shí)為了提高代碼編寫效率,通常會(huì)使用一些快捷鍵。我們小程序開發(fā)工具里常用的快捷鍵如下。
設(shè)置—》快捷鍵設(shè)置
然后點(diǎn)擊如下快捷鍵即可查看所有的快捷鍵
如果感覺(jué)默認(rèn)的快捷鍵不喜歡,可以自己重新設(shè)置快捷鍵。由于自帶的快捷比較多,我這里不一一列舉了,我把一些常用的快捷鍵拿出來(lái)給大家大致講一講,我這里以window電腦為例,如果你mac電腦,可以自己去看下開發(fā)者工具默認(rèn)的快捷鍵。多看幾遍把常用的記住就行了。
5-7,數(shù)據(jù)庫(kù)排序orderBy
orderBy方法在做排序的時(shí)候,接受兩個(gè)參數(shù)
1,根據(jù)那個(gè)字段排序
2,排序規(guī)則(升序或者降序)。升序用asc,降序用desc
如我們根據(jù)商品價(jià)格從低到高升序排列
如我們根據(jù)商品價(jià)格從高到低降序排列
5-8,返回指定條數(shù)的數(shù)據(jù)limit
limit用來(lái)指定查詢結(jié)果集數(shù)量上限,比如我們有100條數(shù)據(jù),只想返回前20條,我們可以通過(guò)limit(20)來(lái)指定只返回20條數(shù)據(jù)。
例如,只返回3條數(shù)據(jù)的寫法如下
注意:limit 在小程序端默認(rèn)及最大上限為 20,在云函數(shù)端默認(rèn)及最大上限為 1000
5-9,分頁(yè)方法skip
skip指定查詢返回結(jié)果時(shí)從指定序列后的結(jié)果開始返回,常用于分頁(yè)。比如我們有100條數(shù)據(jù),想從第10條開始返回?cái)?shù)據(jù),可以通過(guò)skip(10)來(lái)實(shí)現(xiàn)
skip結(jié)合我們上面學(xué)的limit方法可以實(shí)現(xiàn)分頁(yè)效果
比如我們有100條數(shù)據(jù),每次返回20條數(shù)據(jù)。那么就可以分5頁(yè)返回。
第1頁(yè) limit(20).skip(0)
第2頁(yè) limit(20).skip(20)
第3頁(yè) limit(20).skip(40)
第4頁(yè) limit(20).skip(60)
第5頁(yè) limit(20).skip(80)
5-10,Command數(shù)據(jù)庫(kù)操作符
我門上面學(xué)完了數(shù)據(jù)庫(kù)的增刪改查,但是這些都是最基礎(chǔ)最簡(jiǎn)單的操作,如果我們想實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)查詢操作,該怎么辦呢
比如
查詢價(jià)格大于100的商品?
查詢年齡小于18歲的學(xué)生?
如何同時(shí)修改多條數(shù)據(jù)?
如何同時(shí)刪除多條數(shù)據(jù)?
我們?nèi)绻雽?shí)現(xiàn)上面這些復(fù)雜的操作,就需要用到數(shù)據(jù)庫(kù)里的 Command數(shù)據(jù)庫(kù)操作符,就是下面這位
官方文檔:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/Command.html
5-10-1,gt查詢大于指定值的數(shù)據(jù)
比如查詢價(jià)格大于5的所有商品
5-10-2,gte查詢大于等于指定值的數(shù)據(jù)
比如查詢大于等于5元的商品
5-10-3,lt查詢小于指定數(shù)值的數(shù)據(jù)
比如查詢價(jià)格小于5的所有商品
5-10-4,lte查詢小于等于指定數(shù)值的數(shù)據(jù)
比如查詢價(jià)格小于等于5元的所有商品
5-10-5,and同時(shí)滿足多個(gè)條件的查詢
比如查詢價(jià)格大于5小于10元的所有商品