精华内容
下载资源
问答
  • 云函数

    2021-02-05 17:27:41
    云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。 小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法...

    云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。
    小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。
    比如我们如下定义一个云函数,命名为 add ,功能是将传入的两个参数 a 和 b 相加:
    // index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法// event 包含了调用端(小程序端)调用该函数时传过来的参数,同时还包含了可以通过 getWXContext 方法获取的用户登录态 openId 和小程序 appId 信息const cloud = require(‘wx-server-sdk’)
    exports.main = (event, context) => {
    let { userInfo, a, b} = event
    let { OPENID, APPID } = cloud.getWXContext() // 这里获取到的 openId 和 appId 是可信的
    let sum = a + b

    return {
    OPENID,
    APPID,
    sum
    }}
    在开发者工具中上传部署云函数后,在小程序中可以这么调用,
    除了部署云函数进行调用外,还支持云函数本地调试,可以不用部署云函数即可测试
    wx.cloud.callFunction({
    // 需调用的云函数名
    name: ‘add’,
    // 传给云函数的参数
    data: {
    a: 12,
    b: 19,
    },
    // 成功回调
    complete: console.log})// 当然 promise 方式也是支持的
    wx.cloud.callFunction({
    name: ‘add’,
    data: {
    a: 12,
    b: 19
    }}).then(console.log)
    如需在云函数中操作数据库、管理云文件、调用其他云函数等操作,可使用官方提供的 npm 包 wx-server-sdk 进行操作。
    更多的云函数管理和 API,可以参考云函数指引章节。
    云调用
    云调用是云开发提供的基于云函数使用小程序开放接口的能力,支持在云函数调用服务端开放接口,如发送模板消息、获取小程序码等操作都可以在云函数中完成

    因为多表查询不能在微信小程序端运行,所以只能通过云函数的方法调用

    展开全文
  • 网易云每日签到升级打卡,云函数网易云python
  • 调用云函数   1.name:’云函数的名称’  2.data 传给云函数的参数  3.success(){}, 成功回调  4.fail(){}, 失败回调 wx.cloud.callFunction({ name: openId, data:{ a:'1' } success(res) { console....
  • 小程序云开发提供了云函数云函数是运行在服务端的代码,执行速度快。通常一些复杂的功能逻辑或读取云数据库都可使用云函数实现,高效安全。而云函数之间也是可以相互调用的,这样可以使得功能逻辑模块化,提高...


    前言

    小程序云开发提供了云函数,云函数是运行在服务端的代码,执行速度快。通常一些复杂的功能逻辑或读取云数据库都可使用云函数实现,高效安全。而云函数之间也是可以相互调用的,这样可以使得功能逻辑模块化,提高可读性。


    一、案例说明

    场景:在一个集合中,不定时增加新的记录,每个集合都有一个createTime字段,以毫秒存储记录创建时的时间。当集合中的记录离当前时间过了很久后,希望这条记录被删除,以确保记录都是最新的。

    分析:查询记录的条件是时间差(假设120秒),而云开发数据库操作提供的查询指令并不支持运算,因此需要把记录先读取出来再做判断。

    解决:创建两个云函数,一个负责读取所有记录,另一个负责调用前一个云函数获取所有记录,然后再处理。

    二、功能实现

    1.云函数1:getdata

    注意:云函数只能最多一次读取集合中 100 条的记录,这里假设记录不足100条,可以一次性读取完。

    代码如下(示例):

    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    
    cloud.init()
    
    // 云函数入口函数
    exports.main = async (event, context) => {
      const wxContext = cloud.getWXContext()
      const db = cloud.database()
      try {
        return await db.collection('testTrigger').get() //testTrigger是集合名
      } catch (e) {
        console.error(e)
      }
    }
    

    2.云函数2:deldata

    代码如下(示例):

    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    
    cloud.init()
    
    // 云函数入口函数
    exports.main = async (event, context) => {
      const wxContext = cloud.getWXContext()
      const db = cloud.database()
      const t = new Date(); //获取当前时间
      const res = await cloud.callFunction({ //调用云函数getdate
        // 要调用的云函数名称
        name: 'getdata',
        // 传递给云函数的参数
        data: {
          }
      })
      const arr=res.result.data; //把所有记录给arr
      try{
        for (let i = 0; i < arr.length;i++){
          if (t.getTime() - arr[i].createTime > 120000) { // 计算差值,删除的条件
            await db.collection('testTrigger').doc(arr[i]._id).remove()
          }
        }
        return arr.length;
      } catch (e) {
        console.error(e)
      }
    
    }
    

    两个云函数处理各自的逻辑,最终实现删除旧的记录


    总结

    在云函数中调用云函数与在小程序端类似,不过因为云函数运行在服务端,不需要加 wx. 前缀。我们一开始调用时,习惯性复制粘贴,因此比较容易出现这个问题,使得云函数无法运行。

    展开全文
  • 腾讯云无服务器云函数的使用 云函数 云函数是什么 云函数就是云供应商把底层的开发平台搭建好,我们可以直接编写函数代码放在云函数平台上,然后调用函数实现相应的功能。而不需要去考虑开发平台。它是由事件触发,...
  • WPS是一款经常用的软件,但是会员又不想买, 有些功能还必须会员使用,本来WPS是有一个【打卡签到】可以免费领取会员的,但是每天总是忘,因此想到利用“云函数”+Server酱实现基于Python的自动打卡签到,这样每天就...

    【2020.07.20更新】

    自动打卡签到已经失效,需要手动打卡,但是自动邀请仍然正常,手动打卡后每天仍然可以获得11天+的会员。

    2020.07.20日打卡获得12天会员

     

    2020.07.19打卡获得11天会员

     

     

    前言

    WPS是一款经常用的软件,但是会员又不想买, 有些功能还必须会员使用,本来WPS是有一个【打卡签到】可以免费领取会员的,但是每天总是忘,因此想到利用“云函数”+Server酱实现基于Python的自动打卡签到,这样每天就会自动获得会员了,效果还不错,由于内置了一些小号来接受打卡邀请,因此我们的账号还可获得邀请奖励,2020.07.17日亲测是每天最少获得11天的会员,下面是这几天的实测效果:

    2020.07.17亲测有效

     

    2020.07.18又获得11天会员

     


     一.需要的一些配置说明

    废话不多说,直接说怎么实现,我们需要进行一些简单的配置。

    1.1 获得自己WPS帐号的[sid]和[userid]

    首先我们就是要知道自己的【sid】和【userid】,这两个是我们帐号的标志符或者说是自己的WPS帐号的ID身份证明,那么我们去哪里获得这两个参数呢?

    其实很简单,首先我们需要知道一些基础的抓包操作,一般浏览器都是【F12】键开启控制台调试,以谷歌浏览器为例,首先跳转到WPS官方的签到网站:https://zt.wps.cn/2018/clock_in/,界面截图如下:

    WPS官方签到页面

    此时我们按【F12】,点击【网络】,进入抓包调试界面, 这时候我们在签到页面点击登录,按照提示登录后,因为抓包已经开启,故就可在【clock_in】页面获取到自己登陆后返回的【sid】了,需要注意的是WPS账号一定要先绑定手机号和微信,否则可能会提示出错。具体操作截图如下:

    具体抓包操作截图

    我们把【sid】记录下来先,接下来继续找到我们的【userid】,此信息就是我们手机WPS个人信息中的用户ID,举例:【191641526】这一串数字就是我们的【userid】,如下图示:

    获取自己的userid

     知道这两个我们就获取了自己的信息了,就可以进行下一步了。

    1.2 配置server酱用于信息推送

    接下来我们需要配置的是【server酱】,它是用来在push微信信息来告诉我们每天签到是否成功还是失败,使用很简单,只需要按照网站上的流程来即可,网站如下:http://sc.ftqq.com

    配置好拿到SERVER酱的SCKEY即可,举例:SCUXXXXXXXXXXXXXXXX

    1.3 配置云函数

    云函数可以理解为在云上运行的代码,好处就是可以自动执行,不需要你在自己电脑上运行,目前各个商家的云函数每个月都会给用户免费提供一些次数,在这里我用的是腾讯云函数,一个月是100万次的免费次数,实际上我们实现WPS自动签到一个月只需要30次就够了,因此是绰绰有余的。

    首先登陆腾讯云:https://cloud.tencent.com/ ,登陆后找到云函数选项,进入,之后新建一个云函数,配置一下点下一步,详情如下图:

    选择云函数

     

    新建云函数

     

    新建函数的配置

     

    之后在代码编辑栏里输入一下代码,注意下面的代码中请依次修改 23、27、28、33、34行中的需要修改的部分内容!

    # !/usr/bin/env python
    # coding=utf-8
    import requests
    import time
    import json
    import sys
    import pytz
    import datetime
    import re
    from io import StringIO
      
    # Python版本 3.6
    # 20200717更新:添加签到失败提醒
    # 请依次修改 23、27、28、33、34行中的需要修改的部分内容
    # 邀请用户签到可以额外获得会员,每日可邀请最多10个用户,已预置了13个小号用于接受邀请,89-101行信息可选删改
     
    # 参考以下代码解决https访问警告
    # from requests.packages.urllib3.exceptions import InsecureRequestWarning,InsecurePlatformWarning
    # requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    # requests.packages.urllib3.disable_warnings(InsecurePlatformWarning)
     
    # 初始化信息
    SCKEY = '*********复制SERVER酱的SCKEY进来*************(保留引号)'
    data = {
        "wps_checkin": [
            {
                "name": "*********请自行输入,仅用于显示*************(保留双引号)",
                "sid": "*********复制'http://zt.wps.cn'网址Cookie中的sid进来*************(保留双引号)"
            }
        ],
        "wps_invite": [
            {
                "name": "*********请自行输入,仅用于显示*************(保留双引号)",
                "invite_userid": "*********复制手机WPS个人信息中的用户ID进来,类似括号内容(191641526)*************(不保留双引号)",
                "sid": []
            }
        ]
    }
    # 初始化日志
    sio = StringIO('WPS签到日志\n\n')
    sio.seek(0, 2)  # 将读写位置移动到结尾
    s = requests.session()
    tz = pytz.timezone('Asia/Shanghai')
    nowtime = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
    sio.write("--------------------------"+nowtime+"----------------------------\n\n")
     
    # 微信推送
    def pushWechat(desp,nowtime):
        ssckey = SCKEY
        send_url='https://sc.ftqq.com/' + ssckey + '.send'
        if '失败' in desp :
            params = {
                'text': 'WPS小程序签到失败提醒' + nowtime,
                'desp': desp
                }
        else:
            params = {
                'text': 'WPS小程序签到提醒' + nowtime,
                'desp': desp
                }
        requests.post(send_url,params=params)
     
    # 主函数
    def main():
        # sio.write("\n            ===模拟wps小程序签到===")
        sid = data['wps_checkin']
     
        for item in sid:
            sio.write("\n为{}签到---↓\n\n".format(item['name']))
            bl = wps_clockin(item['sid'])
            if bl == 1:
                # 获取当前会员信息
                member_url = 'https://zt.wps.cn/2018/clock_in/api/get_data?member=wps'
                r1 = s.get(member_url, headers={'sid': item['sid']})
                # 累计获得会员天数
                total_add_day = re.search('"total_add_day":(\d+)', r1.text).group(1)
                sio.write('累计获得会员天数: {}天\n\n'.format(total_add_day))
                userinfo_url = 'https://vip.wps.cn/userinfo'
                r2 = s.get(userinfo_url, headers={'sid': item['sid']})
                resp = json.loads(r2.text)
                sio.write('会员信息: {{ "类型":{}, '.format(resp['data']['vip']['name']))
                sio.write('"过期时间":{} }}\n\n'.format(datetime.datetime.fromtimestamp(
                    resp['data']['vip']['expire_time']).strftime("%Y--%m--%d %H:%M:%S")))
     
        # sys.exit()
        wps_inv = data['wps_invite']
        # 这13个账号被邀请
        invite_sid = [
                    "V02StVuaNcoKrZ3BuvJQ1FcFS_xnG2k00af250d4002664c02f",
                    "V02SWIvKWYijG6Rggo4m0xvDKj1m7ew00a8e26d3002508b828",
                    "V02Sr3nJ9IicoHWfeyQLiXgvrRpje6E00a240b890023270f97",
                    "V02SBsNOf4sJZNFo4jOHdgHg7-2Tn1s00a338776000b669579",
                    "V02ScVbtm2pQD49ArcgGLv360iqQFLs014c8062e000b6c37b6",
                    "V02S2oI49T-Jp0_zJKZ5U38dIUSIl8Q00aa679530026780e96",
                    "V02ShotJqqiWyubCX0VWTlcbgcHqtSQ00a45564e002678124c",
                    "V02SFiqdXRGnH5oAV2FmDDulZyGDL3M00a61660c0026781be1",
                    "V02S7tldy5ltYcikCzJ8PJQDSy_ElEs00a327c3c0026782526",
                    "V02SPoOluAnWda0dTBYTXpdetS97tyI00a16135e002684bb5c",
                    "V02Sb8gxW2inr6IDYrdHK_ywJnayd6s00ab7472b0026849b17",
                    "V02SwV15KQ_8n6brU98_2kLnnFUDUOw00adf3fda0026934a7f",
                    "V02SC1mOHS0RiUBxeoA8NTliH2h2NGc00a803c35002693584d"
                ]
        sio.write("\n\n==========wps邀请==========\n\n")
        for item in wps_inv:
            sio.write("为{}邀请---↓\n\n".format(item['name']))
            if type(item['invite_userid']) == int:
                wps_invite(invite_sid, item['invite_userid'])
            else:
                sio.write("邀请失败:用户ID错误,请重新复制手机WPS个人信息中的用户ID并修改'invite_userid'项,注意不保留双引号\n\n")
        desp = sio.getvalue()
        pushWechat(desp,nowtime)
        #print(desp)
        return desp
      
    # wps接受邀请
    def wps_invite(sid: list, invite_userid: int) -> None:
        invite_url = 'http://zt.wps.cn/2018/clock_in/api/invite'
        for index, i in enumerate(sid):
            headers = {
                'sid': i
            }
            r = s.post(invite_url, headers=headers, data={
                       'invite_userid': invite_userid})
            sio.write("ID={}, 状态码: {}, \n\n  请求信息{}\n\n".format(str(index+1).zfill(2), r.status_code, r.text))
     
    # wps签到
    def wps_clockin(sid: str):
        if len(sid) == 0:
            sio.write("签到失败:用户sid为空,请重新输入\n\n")
            return 0
        elif "*" in sid or sid[0] != "V":
            sio.write("签到失败:用户sid错误,请重新输入\n\n")
            return 0
        # 打卡签到
        clockin_url = 'http://zt.wps.cn/2018/clock_in/api/clock_in?member=wps'
        r = s.get(clockin_url, headers={'sid': sid})
        if len(r.history) != 0:
            if r.history[0].status_code == 302:
                sio.write("签到失败:用户sid错误,请重新输入\n\n")
                return 0
        resp = json.loads(r.text)
        # 判断是否已打卡
        if resp['msg'] == '已打卡':
            sio.write("签到信息: {}\n\n".format(r.text))
            return 1
        # 判断是否绑定手机
        elif resp['msg'] == '未绑定手机':
            sio.write('签到失败: 未绑定手机,请绑定手机后重新运行签到\n\n')
            return 0
        # 判断是否重新报名
        elif resp['msg'] == '前一天未报名':
            sio.write('前一天未报名\n\n')
            signup_url = 'http://zt.wps.cn/2018/clock_in/api/sign_up'
            r=s.get(signup_url, headers={'sid': sid})
            resp = json.loads(r.text)
            if resp['result'] == 'ok':
                sio.write('报名信息: 已自动报名,报名后第二天签到\n\n')
                return 1
            else:
                sio.write('报名失败: 请手动报名,报名后第二天签到\n\n')
                return 0
        # 打卡签到需要参加活动
        elif resp['msg'] == '答题未通过':
            getquestion_url = 'http://zt.wps.cn/2018/clock_in/api/get_question?member=wps'
            r = s.get(getquestion_url, headers={'sid': sid})
            '''
            {
                "result": "ok",
                "data": {
                    "multi_select": 1,
                    "options": [
                        "30天文档分享链接有效期",
                        "远程下载助手",
                        "输出长图片去水印",
                        "PDF转图片"
                    ],
                    "title": "以下哪些特权是WPS会员和超级会员共同拥有的?"
                },
                "msg": ""
            }
            '''
            answer_set = {
                'WPS会员全文检索',
                '100G',
                'WPS会员数据恢复',
                'WPS会员PDF转doc',
                'WPS会员PDF转图片',
                'WPS图片转PDF插件',
                '金山PDF转WORD',
                'WPS会员拍照转文字',
                '使用WPS会员修复',
                'WPS全文检索功能',
                '有,且无限次',
                '文档修复'
            }
            resp = json.loads(r.text)
            # sio.write(resp['data']['multi_select'])
            # 只做单选题 multi_select==1表示多选题
            while resp['data']['multi_select'] == 1:
                r = s.get(getquestion_url, headers={'sid': sid})
                resp = json.loads(r.text)
                # sio.write('选择题类型: {}'.format(resp['data']['multi_select'])) 
            answer_id = 3
            for i in range(4):
                opt = resp['data']['options'][i]
                if opt in answer_set:
                    answer_id = i+1
                    break
            sio.write("选项: {}\n\n".format(resp['data']['options']))
            sio.write("选择答案: {}\n\n".format(answer_id))
            # 提交答案
            answer_url = 'http://zt.wps.cn/2018/clock_in/api/answer?member=wps'
            r = s.post(answer_url, headers={'sid': sid}, data={'answer': answer_id})
            resp = json.loads(r.text)
            # 答案错误
            if resp['msg'] == 'wrong answer':
                sio.write("答案不对,挨个尝试\n\n")
                for i in range(4):
                    r = s.post(answer_url, headers={'sid': sid}, data={'answer': i+1})
                    resp = json.loads(r.text)
                    sio.write(i+1)
                    if resp['result'] == 'ok':
                        sio.write(r.text)
                        break
            # 打卡签到
            clockin_url = 'http://zt.wps.cn/2018/clock_in/api/clock_in?member=wps'
            r = s.get(clockin_url, headers={'sid': sid})
            sio.write("签到信息: {}\n\n".format(r.text))
            return 1
        # 判断是否不在签到时间内
        elif resp['msg'] == '不在打卡时间内':
            sio.write('签到失败: 不在打卡时间内\n\n')
            signup_url = 'http://zt.wps.cn/2018/clock_in/api/sign_up'
            r=s.get(signup_url, headers={'sid': sid})
            resp = json.loads(r.text)
            if resp['result'] == 'ok':
                sio.write('已自动报名,报名后请设置在规定时间内签到\n\n')
                return 1
            else:
                sio.write('报名失败: 请手动报名,报名后第二天签到\n\n')
                return 0
        # 其他错误
        elif resp['result'] == 'error':
            sio.write('签到失败信息: {}\n\n'.format(r.text))
            signup_url = 'http://zt.wps.cn/2018/clock_in/api/sign_up'
            r=s.get(signup_url, headers={'sid': sid})
            resp = json.loads(r.text)
            if resp['result'] == 'ok':
                sio.write('已自动报名,报名后请设置在规定时间内签到\n\n')
                return 1
            else:
                sio.write('报名失败: 请手动报名,报名后第二天签到\n\n')
                return 0
     
    def main_handler(event, context):
        return main()
     
    if __name__ == '__main__':
        main()

    按照说明修改完以上代码后,我们可以先测试触发一下看看是否配置正确,点击下面的【测试】按钮,会返回测试结果,如下图所示:

    测试返回结果

     

    确认代码无误后,我们点击完成,之后配置云函数的触发规则,首先点击【触发管理】,之后选择【创建触发器】,具体操作如下图:

    创建触发器

     创建完触发器后,我们配置触发器规则,首先在触发方式里选择【定时触发】,触发周期里选择【自定义触发周期】,在下面的Cron表达式里填入:0 10 8 * * * *  

    如下图示:

    触发器规则配置

     

    以上完成后,便可解放双手,每天在8点10分自动签到,会员就到手了。

    展开全文
  • 主要从以下四个方面来分享一下无服务器云函数云函数的价值及使用场景云函数架构原理云函数关键技术点云函数行业进展趋势无服务器云函数(ServerlessCloudFunction)是腾讯云提供的无服务器(serverless)执行环境,...
  • 云函数本地调用与云函数间调用

    千次阅读 2020-08-09 15:29:28
    云函数本地调用与云函数间调用 根据上一篇讲到的云函数使用,讲到了云函数的基本使用方式,并给出了使用的示例。现在我们来讲一下常用的云函数调用。 云函数基本调用方法 根据官网给出的本地调用云函数的基本示例,...

    云函数本地调用与云函数间调用

    根据上一篇讲到的云函数使用,讲到了云函数的基本使用方式,并给出了使用的示例。现在我们来讲一下常用的云函数调用。

    云函数基本调用方法

    根据官网给出的本地调用云函数的基本示例,本地调用云函数采用wx.cloud.callFunctionAPI,通过wx.cloud.callFunction获取的结果是一个Promise对象,因此官方给出了两种获取云函数处理结果的方式:回调函数和then调用方式。如下所示:

    /*
    * 回调函数方式
    */
    wx.cloud.callFunction({
      // 云函数名称
      name: 'add',
      // 传给云函数的参数
      data: {
        a: 1,
        b: 2,
      },
      success: function(res) {
        console.log(res.result.sum) // 3
      },
      fail: console.error
    })
    

    根据回调函数的方式调用方法可知,这是最基本的调用方式,回调函数是异步进行的,不能在外部获取到云函数处理结果。同理采用Promise.then的方式也会存在类似的结果.

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

    改进的云函数调用方法

    众所周知,wx.cloud.callFunction调用得到一个Promise 对象,想要在外部得到返回结果,可以采用await的方式,如下所示:

    let res = await wx.cloud.callFunction({
    	name: 'add',
    	data: {
    		a: 1,
    	    b: 2,
    	},
    });
    console.log(res.result.sum); // 3
    

    通过await方式调用云函数直接获取返回结果,从而解决了想要在外部拿到调用结果的问题。
    但是此时会有一个问题,多次调用云函数,若其中某一次调用出错后续的云调用将无法执行,因此需要对每一次云函数调用包裹try … catch ,如下所示:

    try {
    	let res = await wx.cloud.callFunction({
    		name: 'add',
    		data: {
    			a: 1,
    			b: 2
    		},
    	});
    	return res && res.result;
    } catch (e) {
    	console.log(e);
    }
    
    try {
    	let res = await wx.cloud.callFunction({
    		name: 'minus',
    		data: {
    			a: 10,
    			b: 2
    		},
    	});
    	return res && res.result;
    } catch (e) {
    	console.log(e);
    }
    

    云函数之间的调用方法

    介绍了本地调用云函数的方式,但其实云函数可以调用云开发提供的存储、数据库和云函数 云函数间调用为实现类似于本地函数间调用模式开辟了路径。为函数间功能的解耦提供方式。
    云函数属于管理端,在云函数中运行的代码拥有不受限的数据库读写权限和云文件读写权限。
    云函数使用 wx-server-sdk 调用其他API,同小程序端一样,也需要执行一次初始化方法:

    const cloud = require('wx-server-sdk')
    // 给定 DYNAMIC_CURRENT_ENV 常量:接下来的 API 调用都将请求到与该云函数当前所在环境相同的环境
    // 请安装 wx-server-sdk v1.1.0 或以上以使用该常量
    cloud.init({
      env: cloud.DYNAMIC_CURRENT_ENV
    })
    

    因此云函数间调用的方式,如下所示:

    const cloud = require('wx-server-sdk')
    
    cloud.init({
      env: cloud.DYNAMIC_CURRENT_ENV
    })
    
    exports.main = async (event, context) => {
      let sum;
      try {
      	let res = await cloud.callFunction({
    	    name: 'add',
    	    data: {
    	      a: event.a,
    	      b: event.b,
    	    }
    	})
    	sum = res.result.sum;
      } catch (e) {
      	console.log(e)
      |
      let minus = sum - event.c;
      return minus;
    }
    

    本地调用与云函数调用的比较

    我们可以将云开发环境看作是一个服务器,本地调用云函数需要建立连接。连接需要一定的耗时,因此可以推断本地调用云函数比云函数中调用云函数更耗时。

    验证

    1、本地调用云函数耗时,如图:
    本地调用云函数

    2、云函数调用耗时,如图:
    云函数调用耗时

    根据上述的验证,可以知道本地调用云函数更耗时,因此想要让程序性能更好,尽可能减少本地调用云函数的次数。提供了一种思路:只暴露一个云函数接口,一次性将所有的处理结果返回给本地,其余的云函数处理都在云函数上进行。

    -------- The END -------

    展开全文
  • 云函数 云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。   小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 ...
  • 以下是我总结的要点: A. 云函数的文件组织 开发环境: 1. 假如你的项目根目录下project.config.json配置了: "cloudfunctionRoot": "cloudfunctionRoot/", ...3. 你的云函数写在cloudfunctionRoot\...
  • 接下来的这篇文章主要介绍下云函数,介绍这个云函数的主要用途是因为要解决从云数据库查询数据最多显示20条的限制,而使用到云函数可以解决这种限制,使用云函数可以将最大限制改为100条,继而达到我们需要的效果。...
  • 深入小程序云开发之云函数 千江月 第一部分 为什么要用云函数 微信官方提供的从小程序端查询云数据库的能力(client-api),那为什么还要使用云函数(server-api)呢?我认为答案有两方面: 1. 趋势使然 现在...
  • 主要介绍了微信小程序云开发之云函数的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 云函数环境配置: 1.在项目下新建一个目录。 2.指定该目录为云函数的跟目录。 在项目的project.config.json文件中,将"cloudfunctionRoot": 字段的值设置为你的云函数根目录,如"cloudfunctionRoot": "云函数根...
  • 云函数扫盲

    2021-03-26 14:45:07
    记录一些云函数的基础知识,混个脸熟 不少同学总是问关于云函数的问题,所以这里发个扫盲的文章吧。 # 云函数是啥? 云函数作为无服务模式的一种实现(FaaS)已经有很多公司在提供了,亚马逊AWS、微软Azure、Google ...
  • 初识云函数

    千次阅读 2018-12-31 11:55:39
    云函数提供了一种直接在云上运行,无状态的、短暂的、由事件触发的代码的能力。 云函数与轻服务的关系 ServerLess,即无服务器架构,也叫轻服务,它包含两个部分,如下: 函数即服务(FaaS: Function as a ...
  • 本文实例为大家分享了微信小程序云开发使用云函数生成二维码的具体代码,供大家参考,具体内容如下 首先,需要给对应的云函数安装 request-promise 依赖。(不会给云函数安装依赖的盆友请移步 微信小程序中的云开发...
  • 本文我们就要使用高大上的云函数了,实现点赞功能 什么是云函数云函数 云函数即在云端(服务器端)运行的函数。 在物理设计上,一个云函数可由多个文件组成,占用一定量的CPU 内存等计算资源;各云函数完全独立;...
  • PHP创建标签云函数代码,使用此函数创建标签云。
  • 一个云函数的创建与使用: 1. project.config.json写上云函数所在目录”cloudfunctionRoot”: “cloudfunctions/”, 2. app.json写上“cloud”:true, 3. 云函数目录右键新建node.js云函数,进入函数编写index.js,...
  • 腾讯文档并无该demo,遂自己写了一个共大家使用,亲测可用。使用腾讯云SDK3.0版本,执行无服务云函数
  • 使用小程序的云函数功能查询个人公积金余额数据
  • 云函数网易云自动打卡

    千次阅读 2020-12-14 14:15:44
    云函数 全民升级时代来了!项目支持了云函数!!! 什么是云函数?就是可以让你没有服务器、本地电脑不用下载Python也可以使用这个项目,而且还是白嫖! 既解决了很多人部署的麻烦,也给了那些被劝退的朋友回来的...
  • 目录云函数1. 创建、安装依赖与部署创建云函数安装依赖上传与部署云函数2. 调用云函数3. 获取用户登录态4. 云调用使用方法 云函数 1. 创建、安装依赖与部署 创建云函数云函数根目录右键,选择创建一个新的 Node....
  • 一、微信小程序的云函数 云函数文件的创建 创建文件夹 cloudfunction/ 在项目根目录找到 project.config.json 文件, 新增 cloudfunctionRoot 字段,指定本地已存在的目录作为云函数的本地根目录 ...
  • 在掘金开发者大会上,在推荐实践那里,我有提到一种云函数的用法,我们可以将相同的一些操作,比如用户管理、支付逻辑,按照业务的相似性,归类到一个云函数里,这样比较方便管理、排查问题以及逻辑的共享。...
  • 云函数的创建 新建的云函数已经初始化完成了 云函数功能书写 云函数的上传 上传成功 此时云服务里面就可以看到对应的云函数 云函数的调用 async development(){ //这个是事件函数,我点击...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 169,778
精华内容 67,911
关键字:

云函数