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

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

作者: 阿宅白石 | 来源:发表于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