小程式雲開發--雲函式操作資料庫
阿新 • • 發佈:2018-11-11
之前學習小程式雲開發的時候,發現關於雲函式操作資料庫的內容在網上非常的少。
想了想,不如自己出個教程。
小程式雲函式執行的環境是Node.js 8.9 , Node.js 是執行在服務端的 JavaScript,如果你熟悉Javascript,那麼你將會很容易的學會Node.js。
我們分為增改查3個部分來介紹。
1.準備
我們在雲控制檯建立個數據集合
確保自己是處在雲開發環境下,本地雲函式路徑和雲端一致,
右鍵選中自己的環境,完成雲函式的同步與更新
2.雲函式操作資料庫--增
服務端寫法:
funcadd 雲函式寫法
// 雲函式入口檔案 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() // 雲函式入口函式 exports.main = async (event, context) => { var filedvalue1 = event.data1 var filedvalue2 = event.data2 try { return await db.collection('mydata').add({ data:{ filed1:filedvalue1, filed2:filedvalue2 } }) } catch (e) { console.log(e) } }
本地呼叫寫法(確保在呼叫雲函式之前在js 檔案首部引入
const db = wx.cloud.database() ):wx.cloud.callFunction({ name:'funcadd', data:{ data1:'kindear', data2:'真帥' },success:function(res){ console.log(res) },fail:function(res){ console.log(res) } })
呼叫成功返回結果:
result._id 是這個記錄的唯一標識碼,可以設定一個變數記錄下來,用作之後的更新刪除等操作。
我們檢視資料集合
這個資料已經被成功記錄。
3.雲函式操作資料庫--改
funcupdate 雲函式寫法
// 雲函式入口檔案 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() // 雲函式入口函式 exports.main = async (event, context) => { var docid = event.docid var vdata1 = event.data1 var vdata2 = event.data2 try { return await db.collection('mydata').doc(docid).update({ data: { filed1:vdata1, filed2:vdata2 } }) } catch (e) { console.log(e) } }
本地呼叫寫法
wx.cloud.callFunction({ name:'funcupdate', data:{ docid:'W-eiILdokuiPGKeC', data1:'chd', data2:'cool' },success:function(res){ console.log(res) },fail:function(res){ console.log(res) } })
呼叫成功控制檯結果:
4.雲函式操作資料庫--查
集合的查詢操作,用雲函式能比直接在本地呼叫查詢到更多條的記錄,只需要你知道查詢的欄位名和對應的值就可以,
funcquery 雲函式,這個是根據 id查詢的,同樣也可以根據vdata1,vdata2 等資訊來進行查詢操作
// 雲函式入口檔案 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() // 雲函式入口函式 exports.main = async (event, context) => { var docid = event.docid var vdata1 = event.data1 var vdata2 = event.data2 try{ return await db.collection('mydata').where({ _id: docid }).get() }catch(e){ console.log(e) } }
小程式呼叫:
wx.cloud.callFunction({ name:'funcquery', data:{ docid:'W-eiILdokuiPGKeC', data1:'chd', data2:'cool' },success:function(res){ console.log(res) },fail:function(res){ console.log(res) } })
控制檯資訊列印