美文网首页
《微信小程序开发从入门到实战》学习四十六

《微信小程序开发从入门到实战》学习四十六

作者: 阿宅白石 | 来源:发表于2023-12-08 23:40 被阅读0次

4.4 云函数

4.4.2 创建第一个微信小程序

在上一篇文已经创建了

4.4.3 获取小程序用户信息

云函数的优势在于和微信登录鉴权的无缝连接。

小程序端调用云函数时,云函数的传入参数会被注入小程序端用户的openid,开发者可以在云函数内使用wx-server-sdk提供的getWXContext方法获取每次调用的上下文(appid,openid),无须校验openid的正确性,因为微信已经完成了这部分的鉴权。如下代码所示:

const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })

exports.main = async (event, context) => {

  const wxContext = cloud.getWXContext()

  return {

    event,

    openid: wxContext.OPENID, // 获取小程序的openid

    appid: wxContext.APPID, // 获取小程序的APPID

  }

}

假设云函数命名为test,上传并部署后,在小程序测试调用,代码如下:

wx.cloud.callFunction({

      name: 'test', // 云函数名称

     complete: res => {

       console.log(res)

     }

    })

4.4.4 在云函数中使用服务端API

在云函数中,可以使用服务端API访问云开发数据库和文件存储功能。与小程序端相似。

在云函数中获取数据库testOne中集合的所有记录,代码如下:

const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

const db = cloud.database() // 获取数据库引用

exports.main = async (event, context) => {

  return db.collection('testOne').get()

}

预览效果如下:

在服务端数据库API只支持Promise风格,因此collection上的get方法会返回一个Promise对象。在云函数中,如果返回一个Promise对象,云函数会在异步操作完成后再返回结果给调用方。因此云函数会在数据库异步取完数据后返回结果。

在云函数可以调用其他云函数,如新建一个函数调用add云函数,代码如下:

const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) 

exports.main = async (event, context) => {

  return await cloud.callFunction({

    name: 'add',

    data: {

      a: 1,

      b: 2

    }

  })

}

由于cloud.callFunction调用云函数也是异步执行的代码,希望拿到函数的返回值需要在调用函数前加上await关键字。

await关键字和async关键字一起使用,只有async关键字的函数可以使用await。

相关文章

网友评论

      本文标题:《微信小程序开发从入门到实战》学习四十六

      本文链接:https://www.haomeiwen.com/subject/dseygdtx.html