我新建一个名为 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);
} })
|
一个云函数内部通过指定参数实现多个操作也是种办法,但是实现不够优雅,url与请求参数堆在一起不是很好看,建议在小程序端对wx.cloud.callFunction做一层封装,暴露出一个更合适的接口,比如:
cloud.call({ func:
'updateUserInfo'
, data: { name:
'123'
} })
云函数执行次数有限制的,这样每次都执行这个云函数
作者提出一种方案很棒,谢谢分享
上面代码运行失败
怎么使用tcb-router更新数据库啊?
666