小程序云开发--云函数操作数据库
2019-11-28

之前学习小程序云开发的时候,发现关于云函数操作数据库的内容在网上非常的少。

想了想,不如自己出个教程。

小程序云函数运行的环境是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) } })

  

控制台信息打印