栏目介绍
「华哥有约」是云开发Cloud Base官方出品的问答专栏,将由社区产品经理“华哥”分主题从不同维度解答云开发的热门门问题、剖析常见误区,帮助开发者更高效地使用云开发。
Q:云函数时区问题,怎么解决?
华哥:云函数中的时区为 UTC+0,不是UTC+8,可以通过语言的时间处理相关库或代码包(如 moment-timezone),识别 UTC 时间并转换为+8 区北京时间。
Q:云函数费用是按设置内存还是实际运行使用的内存计费?
华哥:云函数费用是按照函数配置内存和计费时长来计算费用的。
资源使用量 = 函数配置内存 X 运行计费时长。用户资源使用量,是由函数配置内存,乘以函数运行时的计费时长得出,其中配置内存转换为 GB 单位,计费时长由毫秒(ms)转换为秒(s)单位,因此,资源使用量的计算单位为 GBs(GB-秒)。计费时长最小粒度为100ms,不足100ms向上取整。例如,配置为 256MB 的函数,单次运行了 1760 ms,计费时长为 1800 ms,则单次运行的资源使用量为 (256/1024)*(1800/1000) = 0.45 GBs。针对函数的每次运行,均会计算资源使用量,并按月汇总求和,作为当月的资源使用量。
Q:跨账号环境共享,调用方上传文件资源至共享方后能否正常访问共享方的资源?
华哥:使用 new wx.cloud.Cloud 新建实例使用,再调用实例的 uploadFile 接口,上传资源成功后,另,B 目前无法通过 fileID 访问 A 的资源,可先使用 getTempFileURL 换临时链接的方式实现。
Q:跨账号环境共享,调用方无法在云文件目录右键选择环境且不可上传云函数?
华哥:目前共享的环境,不能在 cloudfunctions 上右键选择,另,因云函数权限很大,共享环境需要在资源方创建上传云函数,即创建空白函数可以在控制台进行,但是上传代码需要资源方在IDE上传。
Q:获取数据库集合数据Collection.get成功,但是返回空值?
华哥:读写数据库受权限控制限制,数据库数据权限默认是“仅创建者可读写”,如果业务需要所有用户可读,需开发者自行设置数据库数据权限为 “所有用户可读,仅创建者可读写” 。
Q:数据库无读写,为什么控制台资源使用情况会有数据库操作次数?
华哥:控制台对数据库菜单的操作,也会产生读次数。
Q:数据库可以创建多少个集合?单个集合大小限制?
华哥:预付费模式下,数据库集合个数取决于当前环境的配额方案,按量付费模式下可以创建800个集合;单个文档大小限制是16MB,但是不建议达到上限,最优解是越小越好,可拆分表格,有助于提升查询效率。
Q:数据库查询数据 limit 的使用?
华哥:limit 在小程序端默认及最大上限为 20,在云函数端默认及最大上限为 1000,取更多数据建议结合skip分页分批次获取。
const params = { // 从集合 data 中随便选点全部 _id:db.command.neq(null)
}
const MAX_LIMIT = 100;
const total = (await db.collection('data').where(params).count()).total;
const batchTimes = Math.ceil(total / MAX_LIMIT)
const tasks = [] for (let i = 0; i < batchTimes; i++) { tasks.push(db.collection('data').where(params).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get())
}
const data = []
if (tasks.length != 0) {
(await Promise.all(tasks)).map(item => {data = data.concat(item.data||[]) })
}
return data
Q:云开发数据库同时连接数是多少?
华哥:预付费模式下,数据库同时连接数取决于当前环境的配额方案,按量付费模式下,数据库的同时连接数是1000。
数据库同时连接数 :数据库请求并发数量,如同时有三十个数据库操作请求,则有二十个会同时执行,剩下十个返回超出并发错误;一次数据库请求(无论小程序端发起还是云函数端发起)将耗费一个连接;每个云环境分别有一个同时连接数限制、独立计数。假如数据库查询平均耗时 10ms,那么一个连接可以支持 100qps(1000ms/10ms=100),20个连接可以支持到 2000qps。
Q:如何下载云存储的文件夹?
华哥:可以直接使用 SDK 的 downloadDirectory 接口下载文件夹或者使用 CLI工具进行下载。
Q:存储缓存的配置规则?
华哥:存储配置设置了多条缓存策略时,相互之间会有重复,配置项列表底部的优先级会高于顶部优先级。
华哥有礼
你还想看云开发的哪些问题合集?在评论区告诉我们!9月3日中午12:00,抽取2名幸运用户赠送精美礼品一份!