小程序·云开发的数据库,是一个既可在前端操作、也能在云函数中读写的json数据库,对外提供丰富的数据库API。从满足基础可用性到现在,已能够满足中大型小程序的要求。
那么,基于云开发数据库,你做过哪些有意思的小程序实践呢?在这个话题中,我们面向广大开发者(包括个人和企业)征集云开发数据库的使用案例,优秀的案例将有机会获得官方专属访谈与“微信开发者”官方公众号推送宣传分享。
案例分享建议包括云开发数据库使用背景与需求,可提供脱敏的代码示例与数据。
参与#云开发#系列话题并提供高质量回答或建议者即有机会获得微信相框Classic一台,快来参加吧!
*获奖情况将在后续「社区每周」公告中公示,如获访谈机会将有官方运营专员通过社区私信联系作者,请及时留意社区私信
*使用小程序云开发过程中的如有疑问或Bug反馈,可在社区云开发版块发帖交流

在这提个云开发的需求:删除的数据要是有一个垃圾桶的概念会不会体验更好一点。有时候强迫症手动删除一些垃圾数据,后面发现删除错了。数据挺重要的,想恢复一下。例如删除的数据有个七天的缓冲期,就能恢复指定数据,如何?数据库回档是整个集合的并不能好好的玩耍。
我个人使用小程序云开发的项目有两个:
1,问卷调查I投票。(拿这个去宣传分享吧,放了些广告了,哈哈哈)
有啥新功能新特性都会想办法塞进“问卷调查I投票”这个小程序。例如:
1,数据实时更新。
2,订阅消息。
3,定时触发器。
4,客服关键字自动回复(开发版做了)
5、生成带参数二维码
6、..............................
从来没有收到礼物,是个礼物就行。(加粗加红了,应该能一眼就看到了)
正在做一个公益小程序,小程序端和PC管理端使用的都是云开发,刚开始PC管理端是直接操作云开发数据库,后来发现比较危险,就全部改成云函数调用数据库了,项目基本完成了,还差个好听的名字,做好后代码全部开源
此仍我的开山之作,云开发首秀作品,欢迎体验
前排占座,坐等上乘作品学习参观
捧场一下:坐等欣赏各位大大的云开发经典作品。
感恩一下:云开发团队辛苦了,小程序开发者能发展这么快,因为站长你们这些巨人带来的巨人作品的肩膀上!
敏捷开发中有一个估算故事点规模的活动,使用的是德尔菲专家背对背的估算技术,每次大家都是使用卡片或者纸牌,或者写在纸上,最后同时亮牌,Scrum Master 在组织大家阐述各自的观点,最终确定一个合适的规模值,这个过程很有意思。但是也会有很多问题,比如,忘记拿牌了,纸牌不够了,找不到那张牌,以及最终确定合理值还需要人工计算等等。于是就产生了把这个活动做成了一个小程序的想法,最终经历PM,产品,策划,工程师,等角色的切换后,上线了计划扑克小程序。
涉及到的技术有:
大家在敏捷项目的运行过程中也可以尝试使用试试,使用中遇到任何问题都可以联系我,产品我会持续改进,越来越完善。预览图如下:
我本人开发过很多小程序,前端经验较为丰富。交流技术问题或者合作可以联系我:
云开发-博客小程序,感兴趣的了解一下
做了一个漫画应用紧密的使用和依赖云数据库(以及云函数),由于更新的漫画数据是在境外的服务器上,但对于国内的用户并不友好,也无法最大化利用CDN进行加速,所以做了如下优化,每次用户访问的时候会先使用云函数检查资源本地是否存在,如果没有的话会尝试将远端的漫画图片下载到本地再显示给用户,这样下次显示就可以使用本地资源了
const db = cloud.database(); // check whether we already saved const res = await db.collection("comics").where({ _id: event.num }).count(); if (res.total > 0) { // already have that comic in our database const r = await db.collection("comics").doc(event.num).get(); return r.data; } // otherwise we need to on-the-fly get that record from remote num = "/" + event.num; const url = "https://example.com" + num + "/info.json"; const res = await axios.get(url); const data = res.data; // download the image from remote await axios(data.img, { responseType: "arraybuffer" }).then(res => { // upload to storage return cloud.uploadFile({ cloudPath: "comics/" + data.num + ".png", fileContent: res.data }); }).then(res => { return cloud.getTempFileURL({ fileList: [{ fileID: res.fileID, maxAge: 24 * 60 * 60 // shall be forever }] }); }).then(res => { data.img = res.fileList[0].tempFileURL; }).catch(console.error).then(res => { return db.collection("comics").doc(data.num).set({ data: data }); }).then(console.log); return await data;同时为了尽可能提高用户的体验,后台增加了一个云函数触发器,随机检查没有被用户点击过漫画,模拟用户点击,随机检查的方式如下(left outer join + sample)
const db = cloud.database(); const _ = db.command; return await db.collection("comic-index").aggregate().lookup({ from: "comics", localField: "num", foreignField: "num", as: "joinedNum" }).match({ "joinedNum.0": _.exists(false) }).sample({ size: 1 }).end() .then(res => { // visit this num const num = res.list[0].num; return cloud.callFunction({ name: "visit", data: { num: num } }); });xkcd的同好可以在等编译的时候用用也是极好的
总的来说,云数据库+云函数大大简化了服务端的成本,一站式的解决方案便于快速验证概念、发布和测试