- 需求的场景描述(希望解决的问题)
我有两个环境,开发(dev)和生产(prod),我在开发环境下新建并部署好云函数后,切换到生产环境,需要切换环境并重新上传所有云函数,而且是一个一个上传,这样在云函数较多的情况下维护起来就很麻烦。
- 希望提供的能力
是否可以提供云函数跨环境的迁移功能,或者开放命令行可以一行命令安装全部依赖并上传所有云函数。
还是说我的使用姿势不太对,有更简便的跨环境迁移云函数的能力
我的解决办法是写一个 云函数 (router)
通过
tcb-router 一个云函数处理所有服务
所以上传也是一个云函数
改环境也是改一个哈哈哈 分分钟都能改好
不是云函数调用云函数
是云函数根据参数调用一个函数
详细看这里
https://github.com/TencentCloudBase/tcb-router
下面一个粟子
// 云函数入口文件 函数名router
const cloud = require(‘wx-server-sdk’);
// npm install tcb-router
const TcbRouter = require(‘tcb-router’);
const util = require(‘util.js’);
cloud.init()
const db = cloud.database();
const _ = db.command;
// 云函数入口函数
exports.main = async (event, context) => {
const app = new TcbRouter({ event });
/**
* 登录
*/
app.router(‘login’, async (ctx, next) => {
await next();
}, async (ctx, next) => {
await next();
}, async (ctx) => {
const login = require(‘login/index.js’);
ctx.body = login.mian(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.mian(event, context, db, _, util);
});
/**
* 测试
*/
app.router(‘test’, async (ctx, next) => {
await next();
}, async (ctx, next) => {
await next();
}, async (ctx) => {
const test = require(‘test/index.js’);
ctx.body = test.mian(event, context, db, _, util);
});
return app.serve();
}
业务处理js 这里写个测试的 其他的 自行参考
test/index.js
// router 目录下面建一个 test目录 这个是 test目录下的index.js
module.exports = {
mian: async (event, context, db, _, util) => {
/**
* 业务操作
*/
return { event, context};
}}
前端调用
wx.cloud.callFunction({
name: ‘router’,
data: {
$url:‘test’
},
success: res => {
console.log(‘test调用成功’, res);
},
fail: err => {
console.log(‘test调用失败’, err);
}
})