收藏
评论

云函数突破二十个云函数限制 实现一键切换环境

我新建一个名为  router   的云函数

使用tcb-router  实现 一个函数   多个操作    实现环境 秒切换  从此告别了   一个个函数的修改上传 。模块共用

安装   tcb-router

npm  install tcb-router


// 云函数入口文件     npm install --production    

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

//   npm  install tcb-router

const TcbRouter = require('tcb-router');

const util = require('util.js');

 

//环境设置   只需要修改这里就可以实现环境切换

cloud.init({

   env: 'xxxxx'

})

 

const db = cloud.database();

 

const _ = db.command;

 

// 云函数入口函数

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


 
 
 

  const app = new TcbRouter({ event });

 

 

  /**

      * 测试

      */

   app.router('test', async (ctx, next) => {

     await next();

   }, async (ctx, next) => {

     await next();

   }, async (ctx) => {

     const test = require('test/index.js');

     ctx.body = test.main(event, context, db, _, util);

   });


 



 

 /**

    * 登录日志

    */

 

   app.router('logList', async (ctx, next) => {

     await next();

   }, async (ctx, next) => {

     await next();

   }, async (ctx) => {

     const logList = require('logList/index.js');

     ctx.body = logList.main(event, context, db, _, util);

   });

 

 /**

    * 登录

    */

   app.router('login', async (ctx, next) => {

     await next();

   }, async (ctx, next) => {

     await next();

   }, async (ctx) => {

     const login = require('login/index.js');

     ctx.body = login.main(event, context, db, _, util);

   });

 


 

 

/**

    * 用户列表

    */

   app.router('userList', async (ctx, next) => {

     await next();

   }, async (ctx, next) => {

     await next();

   }, async (ctx) => {

     const userList = require('userList/index.js');

     ctx.body = userList.main(event, context, db, _, util);

   });

 



 
 

 

  return app.serve();


 
 

}

 

 

在  router  目录  新建test目录 test目录下 新建文件  index.js   这里只演示调用测试的   参考使用

文件目录  router/test/index.js

module.exports = {

   main: async (event, context, db, _, util) => {

    

 

     

       const count = await db.collection('xxxx').count();

         const  list= wait db.collection('xxx').get();

     return { event, context,count,list};

     

 

   }}

 


小程序端调用


     wx.cloud.callFunction({

       name: 'router',

       data: {

         $url:'test'

         

       },

       success: res => {

         console.log('test调用成功', res);

 

       },

       fail: err => {

         console.log('test调用失败', err);

 

       }

     })

 


最后一次编辑于  2018-11-13
收藏

6 个评论

  • 匿名
    匿名
    2018-11-13

    一个云函数内部通过指定参数实现多个操作也是种办法,但是实现不够优雅,url与请求参数堆在一起不是很好看,建议在小程序端对wx.cloud.callFunction做一层封装,暴露出一个更合适的接口,比如:

    cloud.call({ func: 'updateUserInfo', data: { name: '123' } })


    2018-11-13
    赞同 4
    回复
  • undefined
    undefined
    2019-08-29

    云函数执行次数有限制的,这样每次都执行这个云函数

    2019-08-29
    赞同
    回复 1
    • L
      L
      2021-04-16
      执行有什么限制?
      2021-04-16
      回复
  • XCXer
    XCXer
    2019-08-22

    作者提出一种方案很棒,谢谢分享

    2019-08-22
    赞同
    回复
  • 夢开始的地方
    夢开始的地方
    2019-05-07

    上面代码运行失败


    2019-05-07
    赞同
    回复
  • 夢开始的地方
    夢开始的地方
    2019-05-02

    怎么使用tcb-router更新数据库啊?


    2019-05-02
    赞同
    回复
  • Dream
    Dream
    2018-11-13

    666

    2018-11-13
    赞同
    回复
登录 后发表内容