之前學習小程序雲開發的時候,發現關於雲函數操作數據庫的內容在網上非常的少。
想了想,不如自己出個教程。
小程序雲函數運行的環境是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) } })
控制台信息打印