微信小程序云开发

** 云函数**

  • 云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU
    内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。

  • 一个云函数的写法与一个在本地定义的 JavaScript 方法无异,代码运行在云端 Node.js
    中。当云函数被小程序端调用时,定义的代码会被放在 Node.js 运行环境中执行。

  • 云开发的云函数的独特优势在于与微信登录鉴权的无缝整合 。当小程序端调用云函数时,云函数的传入参数中会被注入小程序端用户的
    openid,开发者无需校验 openid 的正确性因为微信已经完成了这部分鉴权,开发者可以直接使用该 openid。

    参考案例
    创建
    微信小程序云开发_第1张图片

云函数创建
在云函数根目录上右键,在右键菜单中,可以选择创建一个新的 Node.js 云函数,名字为add
编写好云函数,需要右键 上传并部署
微信小程序云开发_第2张图片

云数据
点击云开发然后选择数据库
微信小程序云开发_第3张图片
微信小程序云开发_第4张图片

云函数调用

云函数的传入参数有两个,一个是 event 对象,一个是 context 对象。
event指的是触发云函数的事件,当小程序端调用云函数时,event 就是小程序端调用云函数时传入的参数,外加后端自动注入的小程序用户的 openid 和小程序的 appid。
context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。在模板中也默认 require 了 wx-server-sdk,
wx-server-sdk这是一个帮助我们在云函数中操作数据库、存储以及调用其他云函数的微信提供的库

// 云函数入口文件
const cloud = require('wx-server-sdk')
 
cloud.init()
 
// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
 
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

调用云函数

wx.cloud.callFunction({
  // 云函数名称
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
})
.then(res => {
  console.log(res.result) // 3
})
.catch(console.error)

获取数据

// 云函数入口文件
const cloud = require('wx-server-sdk') 
 
cloud.init()
db = cloud.database();
 
// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  // 获取数据数据
  res= await db.collection("book").get();
  return {
  // 返回数据库结构
    books:res.data,
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }

调用数据库

 wx.cloud.callFunction({
      name:"getBook"
    })
    .then(res=>{
      console.log(res.result);  
    })
    wx.cloud.callFunction({
      name:"add",
      data:{a:1,b:2}
    })
    .then(res=>{
      console.log(res.result)
    })
    .catch(err=>console.error(err))}

参考链接微信开发文档

你可能感兴趣的:(微信小程序,小程序)