转载请注明作者和地址。
云开发是腾讯云为移动开发者提供的高可用、自动弹性扩缩的后端云服务,包含计算、存储、CDN、静态托管等能力(Serverless 化),可用于开发多种端应用(小程序,公众号,Web 应用,Flutter 客户端等,后续会陆续支持 iOS 和 Android 等移动应用开发),达到一站式后台服务构建多端应用,帮助开发者统一构建和管理后端服务和后端云资源,避免了应用开发过程中参与繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
云开发套餐提供的是 NoSQL 数据库,底层是MongoDB。 如果你不了解,可以简单的阅读下wiki
nosql是文档数据,扩展非常容易简单。但一个项目的地基就是数据库的数据设计,还是需要设计下er图。
这里我偷懒了,图上没字段,但是我写了sql建表文件。 腾讯云提供控制台手动建表,sql文件可以不写,写了有利于后续开发人员对数据库的维护和扩展。贴两个表:
-- 用户表
CREATE TABLE `t_user`(
`id` bigint(20) UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '主键,自增id',
`password` VARCHAR(100) NOT NULL COMMENT '密码',
`name` VARCHAR(50) NOT NULL COMMENT '用户名称',
`real_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '真实姓名',
`phone` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '手机号',
`email` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '邮箱',
`remark` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注',
`yn` tinyint(2) NOT NULL DEFAULT 1 COMMENT '有效位 1:有效 0:无效',
`creator` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '创建者',
`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifier` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '修改人',
`modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE INDEX `uniq_01` (`phone`, `yn`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '用户表';
-- 角色表
CREATE TABLE `t_role`(
`id` bigint(20) UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '主键id',
`system_id` bigint(20) UNSIGNED NOT NULL COMMENT '系统id',
`name` VARCHAR(50) NOT NULL COMMENT '角色名称',
`remark` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注',
`yn` tinyint(2) NOT NULL DEFAULT 1 COMMENT '有效位 1:有效 0:无效',
`creator` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '创建者',
`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifier` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '修改人',
`modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE INDEX `uniq_01` (`system_id`, `name`, `yn`)
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '角色表';
官方文档写的很清楚了,我简单写下流程
云函数就是函数,托管给云平台,使用云平台计算资源去执行。
Hello World!
,就是这么简单用户身份鉴权(/验证)后,才有权去调用我们的接口(/云函数),才能获取到数据库里的数据;也便于用户访问记录的收集和分析。
import { getToken, IParams } from './services/login';
import baseModel from './models/index';
module.exports.main = async (event, context) => {
if (!event || !event.queryStringParameters) {
return baseModel.errorParams;
}
let params = {
phone: event.queryStringParameters.phone || '',
password: event.queryStringParameters.password || '',
};
console.log('params=>', params);
if (!params.phone || !params.password) {
return baseModel.errorParams;
}
let result = null;
await getToken(params as IParams)
.then((res) => {
result = res;
})
.catch((err) => {
result = err;
});
return result;
};
baseModel
,放了最基本的返回,像参数错误、数据库错误、成功/失败封装方法等等,偷懒复用。getToken
方法就是service
层的登录鉴权服务,根据参数返回用户的token
和ticket
。ticket
生成参考官方文档token
生成直接用jsonwebtoken后台系统,最多的页面就是各种表格、表单,最多的接口就是增删查改。 云函数QPS 200次/s,一个接口并发限制200。 个人系统用不了太多,所以我又偷懒了, 直接一个模块的增删查改放一个路由里,调同一个函数。
import baseModel from './models/index';
import roleModel from './models/role';
import dao from './dao/index';
import { EBaseAction } from './interfaces/index';
module.exports.main = async (event, context) => {
if (!event || !event.queryStringParameters) {
return baseModel.errorParams;
}
let action: EBaseAction = event.queryStringParameters.action || null;
let params = roleModel.orm(event.queryStringParameters.params);
let options = dao.baseOptions(event.queryStringParameters.options || {});
console.log('action=>', action);
console.log('params=>', params);
console.log('options=>', options);
if (!params.systemId || !action) {
return baseModel.errorParams;
}
let result: any = baseModel.error();
switch (action) {
case EBaseAction.add:
result = await dao.add('t_role', params);
break
case EBaseAction.delete:
result = await dao.delete('t_role', params);
break;
case EBaseAction.update:
result = await dao.update('t_role', params);
break;
case EBaseAction.select:
let total: any = await dao.count(
't_role',
roleModel.selctOrm(event.queryStringParameters.params)
);
result = await dao.select(
't_role',
roleModel.selctOrm(event.queryStringParameters.params),
{ ...options, total }
);
break;
default:
result = baseModel.error({ msg: 'action error' });
}
return result;
};
npm install -g frontend-cli-shui
这个脚手架我刚开始建设,现在还只有单页面的模板,npm
已经发布,欢迎使用。
然后用这个脚手架根据配置快速起一个react
项目模版:fe-cli init frontend-power
转载请注明作者和地址。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。