小程序云開發(fā)數(shù)據(jù)庫設(shè)置

數(shù)據(jù)庫初始化

初始化 const db = wx.cloud.database()

切換環(huán)境

const db = wx.cloud.database({
        env: 'trailer-dev' //環(huán)境的名稱
      })
image.png

為了方便編譯查看結(jié)果,不用每次都點擊云開發(fā)頁面爷贫,我們可以新建一個編譯方式,將首頁設(shè)成云開發(fā)

接著我們將數(shù)據(jù)庫初始化放到 cloud.js文件中补憾,最頂上一行

const db = wx.cloud.database() //初始化數(shù)據(jù)庫漫萄,下面可以用db訪問

在wxml中加入一個按鈕

<button bindtap="insertFunc">插入數(shù)據(jù)</button>

cloud.js page對象中加入這個綁定的方法

// 插入數(shù)據(jù)綁定的方法

insertFunc: function(){

},

在界面上點擊云開發(fā),進(jìn)入控制臺后點擊頂上的“數(shù)據(jù)庫”按鈕


image.png

點擊左邊創(chuàng)建一個user的集合


image.png

創(chuàng)建完集合后就可以通過代碼來加入內(nèi)容盈匾,插入的方法就寫成如下

  // 插入數(shù)據(jù)綁定的方法
  insertFunc: function(){
    // 在集合user中增加一條數(shù)據(jù)
    db.collection('user').add({
      //插入一條數(shù)據(jù)
      data: {
        name: 'tommy',
        age: 20
      },
      // 插入成功的回調(diào)函數(shù)
      success: res => { //箭頭函數(shù)腾务,目的是this的指向
          console.log('插入成功', res)
      },
      // 插入失敗的回調(diào)
      fail: err => {
        console.log('插入失敗', err)
      }
    })
  },

插入成功我們就可以看到回調(diào)函數(shù)在控制臺顯示

image.png

在云開發(fā)控制臺中點擊刷新就可以看到內(nèi)容


image.png
image.png

新插入的數(shù)據(jù)中
_id是非關(guān)系型數(shù)據(jù)庫中的標(biāo)識
_openid 是指這個用戶插入的數(shù)據(jù)
而下面的字段才是我們插入的數(shù)據(jù)

同時小程序中也支持promise的寫法,同樣的內(nèi)容我們改寫一下

 // 插入數(shù)據(jù)綁定的方法
  insertFunc: function(){
    // 在集合user中增加一條數(shù)據(jù)
  
    // promise寫法
    db.collection('user').add({
    //插入一條數(shù)據(jù)
    data: {
      name: 'elsa',
      age: 18
    }
  })
  .then( res => {
    console.log('插入成功', res)
  })
  .catch( err => {
    console.log('插入失敗', err)
  }) 

  },

修改

接著試驗一下更新操作削饵,在wxml中加入新按鈕

<button bindtap="updateFunc">更新數(shù)據(jù)</button>

更新數(shù)據(jù)時要通過 _id 這個數(shù)據(jù)唯一標(biāo)識去修改內(nèi)容岩瘦,
例如我們將剛剛輸入的內(nèi)容修改,需要先copy它對應(yīng)的 _id窿撬,比如第一條tommy的數(shù)據(jù)

  // 更新數(shù)據(jù)方法
  updateFunc: function(){
    const id = '0ec685215e2a585b05288efe08b2185b'
    db.collection('user').doc(id)  // doc方法去修改文檔
    .update({  // 在對應(yīng)的文檔中用update傳入一個對象更新
      data: {
        age: 30
      }
    })
    .then( res => {
      console.log('更新完成', res)
    })
    .catch( err => {
      console.log('更新失敗', err)
    })
  },

保存后看到界面是這樣的


image.png

這時候云數(shù)據(jù)庫中tommy仍然是20歲


image.png

點擊更新启昧,得到更新完成的提示


image.png

接著刷新一下云控制臺中的數(shù)據(jù)庫,可以看到已經(jīng)更新成30歲了


image.png

查找

我們在wxml加入查找數(shù)據(jù)的按鈕

<button bindtap="searchFunc">查找數(shù)據(jù)</button>

接著是js中處理事件

  // 查找
  searchFunc: function(){
    db.collection('user').where({  //用where函數(shù)進(jìn)行查找
      // 查詢條件
      age: 18
    }).get()  //輸入條件后用get方法訪問
    .then( res => {
      console.log('查詢成功', res)
    })
    .catch( err => {
      console.log('查詢失敗', err)
    })
  },

接著我們試著在控制臺中直接插入一條數(shù)據(jù)


image.png
image.png

把年齡改回18


image.png

后臺插入的數(shù)據(jù)是沒有_openid的


image.png

嘗試后臺直接在user collection中直接插入數(shù)據(jù)
插入的數(shù)據(jù)不包含 openid劈伴,在小程序的查詢中查詢不到密末,這個涉及到權(quán)限設(shè)置


image.png

我們將權(quán)限修改成所有人都可以看


image.png

確認(rèn)后


image.png

這時候在小程序中再點擊查詢就可以看到兩條記錄了


image.png

刪除

新加一個刪除按鈕

<button bindtap="deleteFunc">刪除數(shù)據(jù)</button>

同樣的刪除方法

  deleteFunc: function(){
    const id = '0ec685215e2a585b05288efe08b2185b'  // 也是用_id的方式訪問
    db.collection('user').doc(id)  // doc方法去找到文檔
    .remove()
    .then( res => {  // 成功刪除
      console.log('刪除成功', res)
    })
    .catch( err => {
      console.log('刪除失敗', err)
    })
  },
image.png

點擊刪除按鈕后在控制臺顯示


image.png

刪除成功
同時在云開發(fā)控制臺中就只剩兩條數(shù)據(jù)了


image.png

這個就是單條數(shù)據(jù)在小程序中的刪除

而多條數(shù)據(jù)的刪除,在小程序端是無法控制的跛璧,需要調(diào)用云函數(shù)才能進(jìn)行批量刪除

上面涉及到的函數(shù)在官方的文檔中都能找到

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html

云函數(shù)

一段運行在云端的代碼苏遥,相當(dāng)于小程序后端服務(wù)端的代碼,
這里我們不需要管理服務(wù)器赡模,只需要通過一鍵上傳部署田炭,就可以運行這些代碼

云函數(shù)要用到nodejs,所以我們需要安裝node v8.0 以上版本

在整個項目的根目錄下有個 cloudfunctions 文件夾漓柑,這個就是云函數(shù)文件夾
如果要修改名字教硫,要在packageconfig.json 這個配置中修改

在云控制臺中可以查看到我們建立的所有云函數(shù)


image.png

我們新建一個云函數(shù)


image.png

新建完成后,它會自動同步到線上辆布,并且顯示上傳結(jié)果瞬矩,在云控制臺中點擊刷新就可以看到新建的云函數(shù)


image.png

注意上傳編譯的云函數(shù)有延遲

調(diào)用云函數(shù):
在wxml中加入一個按鈕

<view>云函數(shù)</view>
<button bindtap="sum">調(diào)用云函數(shù)sum</button>

在js文件中加入該sum方法

  // 云函數(shù) sum 調(diào)用
  sum: function(){
    console.log('云函數(shù)調(diào)用 sum')
    // 在小程序端調(diào)用云函數(shù)
    wx.cloud.callFunction({
      name: 'sum',  // 調(diào)用云函數(shù)的名稱
      data: {  // 接收輸入的參數(shù),等同于云函數(shù)中的內(nèi)容
        a: 10,  // 傳遞的event.a + event.b桉樹
        b: 2
      }
    })
    .then( res => {
      console.log('調(diào)用云函數(shù) sum成功', res)
    })
    .catch( err => {
      console.log('調(diào)用云函數(shù)錯誤', err)
    })
  },

點擊后可以看到調(diào)用云函數(shù)锋玲,服務(wù)器將結(jié)果返回


image.png

計算結(jié)果顯示正常


image.png

同時在云開發(fā)控制臺也可以查詢到整個云函數(shù)的調(diào)用情況


image.png

當(dāng)然也可以點擊測試景用,去看測試的結(jié)果


image.png

測試輸入的內(nèi)容,修改key


image.png

image.png

這里可以讓我們寫好云函數(shù),在寫本地調(diào)用前伞插,對云函數(shù)進(jìn)行一個測試

點擊日志刷新割粮,可以看到每次調(diào)用的結(jié)果


image.png

通過云函數(shù)獲取openid

wxml中的代碼為一個按鈕,綁定getOpenIdFunc方法

<button bindtap="getOpenIdFunc">獲取當(dāng)前用戶openID</button>

js 中寫入

 // 獲取當(dāng)前用戶openId
  getOpenIdFunc: function(){
    wx.cloud.callFunction({
      // 獲取openId是小程序原生函數(shù)
      name: 'login'
    })
    .then( res => {
      console.log('登錄成功', res)
    })
    .catch( err => {
      console.log('登錄失敗', err)
    })
  } , 

寫完后記得將云函數(shù)目錄中的login目錄上傳部署媚污,因為默認(rèn)是沒有在云端安裝的
等待上傳更新權(quán)限并部署完成舀瓢,再點擊按鈕就可以在控制臺中看到登錄成功了

image.png

如果前面這步忘了上傳編譯,點擊按鈕后有可能會出現(xiàn)登錄錯誤


image.png

上傳速度由電腦速度和網(wǎng)速決定

批量刪除

因為小程序規(guī)定批量刪除數(shù)據(jù)庫中的數(shù)據(jù)耗美,只能通過云函數(shù)來執(zhí)行京髓,所以這里我們新建一個云函數(shù)
batchDelete,建立后它會自動上傳和更新權(quán)限商架,接著我們在云函數(shù)index.js中寫入代碼堰怨,整個文件如下

// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init()
//獲取云數(shù)據(jù)庫權(quán)限
const db = cloud.database()
// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
  try { //為了防止刪除數(shù)據(jù)庫報錯,所以套用一個try捕獲異常
    // 搜索加刪除  這里是異步操作所以要用es7語法 await
    return await db.collection('user').where({ // 搜索符合條件的內(nèi)容
      name: 'jerry'
    }).remove()  // 刪除
  } catch (e) {  // 捕獲try的錯誤
    console.error('批量刪除出錯', e)
  }
}

完成后一定要記得上傳部署
然后wxml文件中加入一個新按鈕

<button bindtap="batchDelFunc">批量刪除數(shù)據(jù)</button>

js中代碼

  // 批量刪除
  batchDelFunc: function(){
    wx.cloud.callFunction({
      name: 'batchDelete'  // 云函數(shù)名稱
    })
    .then( res => {
      console.log('批量刪除成功', res)
    })
    .catch( err => {  // 數(shù)據(jù)庫斷線或網(wǎng)絡(luò)不好時出錯
      console.log('批量刪除失敗', err)
    })
  },
image.png

image.png

云端未刪除前的數(shù)據(jù)


image.png

刷新云數(shù)據(jù)庫后


image.png

數(shù)據(jù)只剩兩條诚些,符合 name: 'jerry' 的云數(shù)據(jù)庫內(nèi)容被刪除了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皇型,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砸烦,更是在濱河造成了極大的恐慌弃鸦,老刑警劉巖幢痘,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颜说,居然都是意外死亡购岗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門门粪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玄妈,你說我怎么就攤上這事∫锴” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵诡必,是天一觀的道長搔扁。 經(jīng)常有香客問我蟋字,道長,這世上最難降的妖魔是什么愉老? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任剖效,我火速辦了婚禮,結(jié)果婚禮上璧尸,老公的妹妹穿的比我還像新娘。我一直安慰自己爷光,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布欢瞪。 她就那樣靜靜地躺著徐裸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪重贺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天气笙,我揣著相機(jī)與錄音,去河邊找鬼缸棵。 笑死,一個胖子當(dāng)著我的面吹牛蛉谜,可吹牛的內(nèi)容都是我干的崇堵。 我是一名探鬼主播型诚,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸳劳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涵紊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤摸柄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后驱负,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡宇挫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年酪术,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绘雁。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖欣除,靈堂內(nèi)的尸體忽然破棺而出继阻,到底是詐尸還是另有隱情,我是刑警寧澤瘟檩,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布腔丧,位于F島的核電站缔莲,受9級特大地震影響倚聚,放射性物質(zhì)發(fā)生泄漏驶悟。R本人自食惡果不足惜寥闪,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望疲憋。 院中可真熱鬧,春花似錦埃脏、人聲如沸搪锣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堵幽。三九已至,卻和暖如春抡谐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背麦撵。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工溃肪, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留免胃,地道東北人惫撰。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像扼雏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诗充,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354