评论

云函数的再使用

云函数的调用、云函数操作数据库、云函数操作文件上传

  1. 使用云函数的目的?

    # 弱化后端和运维概念,无需搭建服务器

    # 脱离服务器来实现小程序的功能

    注意:
                1、使用云开发能力必须填写 AppID (无游客模式、也不可以使用 测试号)
                2、云开发能力从基础库 2.2.3 开始支持(覆盖率 97.3%)
                3、project.config.json 中增加了字段 cloudfunctionRoot 用于指定存放云函数的目录
                4、cloudfunctionRoot 指定的目录有特殊的图标
  2. 配置准备

    1)配置project-config.json:
     
        "cloudfunctionRoot": "cloudfunctionRoot/",
        #指定云函数的本地根目录 
     
        "miniprogramRoot": "miniprogramRoot/",
        # 指定小程序源码的目录(需为相对路径) 
            不设置会报异常,目的就是分开云函数和小程序
         
    2)初始化环境app.js:
        wx.cloud.init({
            env: "dev-moce",//环境id
            traceUser: true,//是否在将用户访问记录到用户管理中,在控制台中可见
        })
         
    3)安装wx-server-sdk(node+npm)
     
        npm install --save wx-server-sdk@latest
  3. 使用云函数

    #云函数编写
        // 云函数入口文件
        const cloud = require('wx-server-sdk')
        cloud.init()
        // 云函数入口函数
        exports.main = async (event, context) => {
          return {
            sum: event.a + event.b
          }
        }
         
    #云函数调用
        wx.cloud.callFunction({
          name: 'add',
          data: {},
          success: res => {},
          fail: err => {}
        })
         
    注意:
        1、调用之前要在云函数文件右击 上传部署(“ 上传并部署:云端安装依赖(不上传 node_modules) ”)
        2、云函数的代码不能在小程序js文件里写
  4. 数据库


                 
            #操作数据库
             
                //创建集合
                    ~ 通过云开发控制台创建
                    ~ 通过云函数代码创建
                          let db = cloud.database();
                          return await db.createCollection('file_infos')
             
                //获取数据库
                const database = wx.cloud.database( { env: 'dev-moce' } );
     
                //获取数据库的数据集
                const moceCollection = database.collection('music_list');
     
                //添加记录
                moceCollection.add({data: {})
     
                //删除记录
                moceCollection.doc(item._id).remove()
     
     
                //更新记录
                moceCollection.doc(item._id).update({data: {})
     
                //获取记录
                moceCollection.where({_openid: OpenId}).get({})
     
                //获取openId
                exports.main = async (event, context) => {
                  const openId = event.userInfo.openId
                }
  5. 文件存储

    #选择文件或图片
        wx.chooseMessageFile({})
        wx.chooseImage({})
     
    #上传文件
        wx.cloud.uploadFile({cloudPath:'logo.png'})
         
    #获取文件的http地址
        wx.cloud.getTempFileURL({})
     
    #下载文件
        wx.cloud.downloadFile({})
     
    #删除文件
        wx.cloud.deleteFile({})
         
    #注意:
        1、文件的存储位置,就是云存储的根目录,上传文件可以自己指定
        2、播放MP3 ,ios不能播放带有中文的MP3链接
  6. 问题收集

            # 开发内存限额  5G
            # 云函数环境配置目前没有比较优雅的统一管理方式
                云函数太多会很慢
            # 只能实现简单的数据库和文件的增删改查,数据库的连表查询支持不好
            # 不要去项目里实用,还是用专门的后台来支持,毕竟还不太完善
         
            ~ 微信小程序工具类集合(云函数调用、云数据库调用、时间格式化工具等等):
                参考:https://developers.weixin.qq.com/community/develop/article/doc/0008c6695284f8bc32688b8c851013
                $ npm i wx-tool --save
最后一次编辑于  09-06  (未经腾讯允许,不得转载)
点赞 0
收藏
评论

2 个评论

  • Wang
    Wang
    09-06

    使用MySQL的作用是啥,没看出来啊,就是是初始化了一个MySQL然后没了。引入MySQL是为了小程序直接访问自己服务器的MySQL吗?

    09-06
    赞同
    回复 3
    • 漠天
      漠天
      09-06
      对,我也是参考别人的搞得;后来发现这玩意没用
      09-06
      回复
    • Wang
      Wang
      09-06回复漠天

      感觉既然现在转化为自己的知识自己的文章还是应该搞清楚,即是对自己负责也是对读者负责啊。

      09-06
      回复
    • 漠天
      漠天
      09-06
      受教了,谢谢
      09-06
      回复
  • "
    09-05


    云函数外网流量这个一定会产生吗 有没有内网的方式?

    09-05
    赞同
    回复 1
    • 漠天
      漠天
      09-05
      这个应该没有吧,本身访问的就是云服务啊
      09-05
      回复