uniCloud云函数概述

uniCloud.init 访问非绑定的uniCloud空间。

当需要访问非绑定的空间资源时,可以通过以下代码实现访问其它空间资源:

客户端无论腾讯阿里均支持。云端uniCloud.init方法仅腾讯云支持,且仅能获取同账号下的腾讯云服务空间的uniCloud实例。

//开发者创建了多个服务空间,则需手动初始化。
const myCloud = uniCloud.init({
  provider: 'aliyun', //【必需】空间类型,可选值:aliyun、tencent、alipay
  spaceId: 'xxxx-yyy', //【必需】服务空间ID,可以在uniCloud控制台服务空间列表中查看
  clientSecret: 'xxxx', //【必需】仅阿里云支持,可以在uniCloud控制台服务空间列表中查看
  accessKey: 'xxx', //【必需】仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看
  secretKey: 'xx', //【必需】仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看
  spaceAppId: 'xxx', //【必需】仅支付宝云支持, 可以在uniCloud控制台服务空间详情中查看
  endpoint: 'xxx',  //【可选】服务空间地址,仅阿里云与支付宝云支持。阿里云商用版请将此参数设为https://api.next.bspapp.com
});
//通过uniCloud实例调用云开发的API
myCloud.callFunction()
myCloud.uploadFile()

源文URL:https://doc.dcloud.net.cn/uniCloud/concepts/space.html

 

uniCloud的云函数分为:

 

普通云函数、云对象与客户端通信 

云函数执行过程中,客户端可以通过相关事件获取执行进度,这里分客户端与云函数端进行代码模块整理:(原文:https://doc.dcloud.net.cn/uniCloud/sse-channel.html)

客户端获取云函数执行进度代码如下:

  const channel = new uniCloud.SSEChannel() //创建消息通道
  
  export default {
    data() {},
    onLoad() {},
    methods: {
      //
      async testSSE() {
        this.ListenerMessage()
        this.ListenerEnd()
        await this.openSSE()
        // 必需在开启通道后,调用云函数
        const res = await uniCloud.callFunction({
          name: 'massive-task',
          data: {
            channel: channel // 调用云函数时传入通道对象(注意必需带入此参数)
          }
        })
      },
      
      // 监听message事件: 云函数向客户端发送消息
      ListenerMessage() {
        this._ListenerMessage()
      },
      _ListenerMessage() {
        channel.on('message', (message) => {
          console.log('on message', message);
        })
      },
      
      // 监听end事件:云函数告诉客户端它执行完成
      ListenerEnd() {
        this._ListenerEnd()
      },
      _ListenerEnd() {
        channel.on('end', (message) => {
          console.log('on end', message);
        })
      },
      
      // 监听通道错误
      ListenerError() {
        this._ListenerError()
      },
      _ListenerError() {
        channel.on('error', (err) => {
          console.error('收到错误:', err) 
        })
      },
      
      //移除监听
      removeListenerMessage() {
        channel.off('message', this._ListenerMessage)
      },
      removeListenerEnd() {
        channel.off('end', this._ListenerEnd)
      },
      removeListenerError() {
        channel.off('error', this._ListenerError)
      },

      //  开启通信
      async openSSE() {
        await channel.open() //注意这里是 await调用
      },
      
      // 关闭通信
      async closeSSE() {
        await channel.close()
      }
    }
  }

 

云函数向客户端发送进度消息,代码模板如下:

// 普通云函数代码
exports.main = async (event, context) => {
  const channel = uniCloud.deserializeSSEChannel(event.channel)
  await channel.write({
    a: 1
  })
  await channel.write({
    a: 2
  })
  await channel.write({
    a: 3
  })
  await channel.write({
    a: 4
  })
  await channel.end({ //end 如果客户端不需要end事件可不写
    a: 5
  })
  return {}
};
// 云对象代码
module.exports = {
  excuteTask(param) {
    const channel = uniCloud.deserializeSSEChannel(param.channel)
    await channel.write({
      a: 1
    })
    await channel.write({
      a: 2
    })
    await channel.write({
      a: 3
    })
    await channel.write({
      a: 4
    })
    await channel.end({
      a: 5
    })
    return {}
  }
}

 

 

schema2code功能可以根据数据库配置说明,自动将数据库生成前端或后端页面(HTML + CSS + 具体功能实现,比如添加、编辑、列表、删除 )。

 

 

posted @ 2024-04-16 16:09  1024记忆  阅读(48)  评论(0编辑  收藏  举报