收藏
回答

话题 全部话题

#云开发# 你有使用小程序·云开发数据库吗?有什么经典案例可以分享呢?

小程序·云开发数据库,是一个既可在前端操作、也能在云函数中读写的json数据库,对外提供丰富的数据库API。从满足基础可用性到现在,已能够满足中大型小程序的要求。

那么,基于云开发数据库,你做过哪些有意思的小程序实践呢?在这个话题中,我们面向广大开发者(包括个人企业)征集云开发数据库的使用案例,优秀的案例将有机会获得官方专属访谈“微信开发者”官方公众号推送宣传分享。

案例分享建议包括云开发数据库使用背景与需求,可提供脱敏的代码示例与数据。


参与#云开发#系列话题并提供高质量回答或建议者即有机会获得微信相框Classic一台,快来参加吧!

*获奖情况将在后续「社区每周」公告中公示,如获访谈机会将有官方运营专员通过社区私信联系作者,请及时留意社区私信

*使用小程序云开发过程中的如有疑问或Bug反馈,可在社区云开发版块发帖交流

写回答关注话题邀请回答

55 个回答

  • 驰子
    驰子
    精选2020-05-13

    我做了两款小程序,都使用了云数据库。

    1、小确幸丨记录生活小美好

    利用聚合,一次查询直接关联用户表,计算是否点赞和管理权限。

    利用聚合实现 一次查询,直接返回用户表和内容表的关联,同时用聚合计算出是否点赞、是否有操作权等内容。

    之前没有使用聚合的时候,写了三个表,用户表、帖子表、喜欢表。查询需要大量代码,因为每个帖子都需要查询作者和喜欢信息,一度在循环体里嵌套查询语句,代码不好看就算了,效率还特别慢,用户体验较差。

    使用聚合之后,直接一次查询解决了,省了大量逻辑代码,用户基本也是秒开,爽啊!

    改造先后对比:

    之前: 上百行代码,多次查询,需要单独判断函数,处理时间在2000ms以上

    之后:一行代码,一次查询,直接查询时算出权限,处理时间在300ms以内

    核心代码:

     const query = [{
          //0我的
          '_openid': OPENID
        },
        {
          //1公开
          public: true
        },
        {
          //2喜欢
          likes: db.command.all([OPENID])
          // likes: $.in([OPENID, '$likes'])
        },
        {
          //3本周
          // createTime: $.gte(['$createTime', getCurDate('weekStart')])
          // createTime: _.gte(getCurDate('weekStart'))
        }, {
          //4指定
          _id: event.id
        }
        ]
    let listData = await db.collection('post').aggregate()
            .match(query[event.listType])
            .sort({
              createTime: -1
            })
            .skip(20 * (event.pageNum - 1))
            .limit(20)
            .lookup({
              from: "user",
              localField: "_openid",
              foreignField: "_id",
              as: "postList"
            })//和用户表关联
            .replaceRoot({
              newRoot: $.mergeObjects([$.arrayElemAt(['$postList', 0]), '$$ROOT'])
            })//将用户表信息放到根节点上
            .addFields({
              day: $.dayOfMonth('$createTime'),
              month: $.month('$createTime'),
              year: $.year('$createTime'),
              time: $.dateToString({
                date: '$createTime',
                format: '%Y年%m月%d日'
              }),
              isLike: $.in([OPENID, '$likes']), //判断这个帖子是否喜欢
              isLiked: $.in([OPENID, '$liked']), //判断这个帖子是否喜欢过
              isAuthor: $.eq(['$_openid', OPENID]), //判断这个帖子是否为作者
              isAdmin: $.eq([OPENID, 'oy0T-4yk7lCRFGDefpFC4Yvx_ppU']),//判断是否有管理员权限
              like: $.size('$likes'), //喜欢数
            })
            .project({
              postList: 0,
              userInfo: 0,
              liked: 0,
              likes: 0,
              city: 0,
              province: 0,
              country: 0,
              language: 0,
              nlp: 0,
              saveType: 0,
            })//清除掉不需要的字段
            .end()
    

    详细解析:https://developers.weixin.qq.com/community/develop/article/doc/0000ce1ac5c46874855ac2c1051013

    2、产品笔记丨发现优秀产品细节

    利用数据库高级操作更新文章。

    这款小程序因为内容全是自己创作,所以在上传作品的时候非常“偷懒”的使用了云开发的高级操作直接上传作品,这样一来,省去了后台和做不必要的界面,非常方便,数据操作非常方便。

    新增操作:

    效果如下:

    2020-05-13
    赞同 23
    回复 12
    • momo
      momo
      2020-05-16
      学习了
      2020-05-16
      5
      回复
    查看更多(11)
  • showms
    showms
    2020-05-15

    作为一名独立开发者,当看到小程序支持云开发可以不需要自己购买服务器时甚是开心。毕竟因为自己太穷了[苦笑]

    作为一名JAVA开发工程师,第一次接触云开发的时候大概是在19年4月份吧

    给我的感觉云开发最大的优点是:1、基础配额版可以免费使用;2、接口的云调用比HTTPS调用简单;3、提供云存储;4、可以快速试错(有些公司可能会先用云开发版快速开发一个小程序投入市场,入场市场反应不错,后续再加大开发投入)

    当然有优点肯定也有缺点:1、不能多表关联查询;2、并发数有限,这点对于个人开发者来说估计问题不大;3、云函数数量有限制,所以开发的时候需要注意规划好;4、一但使用云开发,将来如果想再迁移到云服务器成本较大

    目前我自己开发的恋人小清单就是用的云开发。虽然功能不多。但是写了一堆的云函数。目前有43个

    一开始不知道云函数有数量的限制,所以基本是加一个功能,我就会加一个云函数。。。大家在做云开发的时候需要注意一下

    目前的资源使用情况

    总体来说,云开发个人还是蛮喜欢。接下来还会继续使用云开发

    下面介绍一下我第一个使用云开发的小程序恋人小清单

    恋人小清单是用照片和文字记录情侣恋爱点滴,在多年以后再看到时,内心还会为之感动的恋爱时光。没有华丽的辞藻,但却有最美好的回忆

    最初开发这个小程序是为了送女朋友作为生日礼物。上线后发现居然还有其他用户也在使用,于是也就继续搞下去了哈哈哈哈

    大家可以扫码体验一下

    2020-05-15
    赞同 20
    回复 16
    • 杨泉
      杨泉
      发表于小程序端
      2020-05-16
      这年头,审核都这么松了?就你这类目,能做ugc社区? 另外,“我的”页面那明目张胆的虚拟支付,也不知道是怎么过审的。
      2020-05-16
      9
      回复
    查看更多(15)
  • 老张
    老张
    2020-05-14

    分享一下我云开发.云数据库的开发经历:

    总共独立开发了约10个小程序,基本上全部都多多少少运用了云开发。

    分为两种开发模式:

    一、完全云开发模式

    课博

    初衷是做一个付费内容平台的SaaS,因为当时有几个教育行业的朋友都想做这种东西,于是就想做一个共用平台给大家用;

    现在做成了一个付费内容的准论坛的东西。

    功能:

    1、用户发布文章(图片、文字和视频),采用云数据库单表结构;

    2、tabs模式的文章分类展示;

    3、仿头条的回复评论点赞系统,独立体系,做成代码片段,以供其它小程序集成;

    4、集成的简易CMS管理平台;分为管理员入口和文章审核及运营员入口;

    5、微信支付。在云支付推出之前就已经完美的云开发支付功能;

    6、数据库表包括:

    content(文章内容表)

    Comment(评论回复表)

    User(用户表)

    Payment(支付表)

    Content2user(用户与内容关系表,包括阅读、收藏、点赞、支付、关注)

    Roles(cms角色表)

    poster(楼主信息表)

    Follow(关注表)


    二、混合模式

    传统模式+云开发模式

    除了业务逻辑和数据库,其他与微信相关的功能全部云开发实现,后台采用nginx+nodejs+koa2+mongo架构。

    将各种功能做成代码片段,以供其他小程序集成。

    作为独立开发者,就没有必要做成插件和自定义组件,费力不说,还没有代码片段直接拷贝过来方便。

    各种独立模块代码片段包括:

    1、云开发支付(不是云支付)。通过云函数调用微信支付api,已实现微信支付全部功能,统一下单、查询、退款等;完美解决没有notify_url回调的问题,完美解决用户不点击完成直接锁屏的异常操作问题;数据库表payment

    2、独立的仿头条评论系统,可集成在任何小程序的主内容上,包括评论、回复、点赞;可以直接实现买家点评、影评、文章评论、论坛、问题解答、用户反馈等各种需求;数据库表:comment,单独大表,储存以上信息。

    3、订阅消息机制;实现用户授权次数记录,消息量不足提醒。数据库表:msg记录每个用户的订阅数,实现对用户订阅消息的管理。

    4、安检及云存储文件管理系统。包括内容安检,由于采用上传fileID到云函数的方式,必然造成文件垃圾,如何清理是个难题,与其在业务逻辑上小心翼翼地考虑各种意外,及时清理fileID,还不如统一清理,本模块用来解决这个问题;数据库表:cloudFiles,记录每个fileID的信息。

    5、用户登录模块。用户授权、电话号码、openid和unionid。数据库表user,储存以上信息。

    6、其他ocr及openapi的通用模块;


    云开发,微信已经在serverless上走在了最前列,真的是越来越好用了。但是对我们这些老手却是越来越郁闷了,本来还可以有点技术得瑟一下,结果现在连小白也可以直接上手了。我们开发员要失业了,设计和产品经理都可以直接码代码了。


    2020-05-14
    赞同 11
    回复 14
    • Admin ²º²³
      Admin ²º²³
      2020-05-16
      这个似曾相识的感觉。收藏了
      2020-05-16
      1
      回复
    查看更多(13)
  • 濯涟散人
    濯涟散人
    2020-05-15

    #云开发# 云数据库真的非常简单好用。

    我的小程序里为用户建立了成长体系,可以通过签到和分享获得积分。所以用云数据库为用户建立数据档案是非常高效的办法。只需要用云函数中对数据库进行添加和更新操作就可以了。

    强烈建议不要使用小程序端的api对数据库进行操作!

    尽量在云函数中对数据库进行操作,安全、可控。毕竟数据是很贵重的。

    欢迎大家试试看。也欢迎大家来与我交流开发心得。


    2020-05-15
    赞同 3
    回复
  • 奥利给
    奥利给
    2020-05-13

    该小程序现已开源,地址https://gitee.com/samkee/lottery-miniprogram

    自从用了云开发,越用越爽,废话不多说,后面介绍下我花了半个月做的抽奖小程序。

    半个月前注册了“抽奖精选”这个小程序,然后前天审核上线成功。

    后面先给大家看下小程序截图:

    接着给大家看下我云开发的集合以及云函数

    后面介绍下我的小程序所需要的云函数。

    lottery云函数

    就像上图那样,通过前端的action来执行不同的业务逻辑,使用非常方便,代码也很清晰。

    user云函数

    授权登录相关逻辑

    结语:希望大家能大胆地拥抱云开发,无须配置繁琐的开发环境,专注业务逻辑。云开发底层已经实现并发处理,性能也是杠杠的。

    大家有兴趣的话,可以加我微信沟通学习,一起进步!

    2020-05-13
    赞同 3
    回复 4
    • Admin ²º²³
      Admin ²º²³
      2020-05-19
      捧场一下:欣赏各位大大的云开发经典作品。
      感恩一下:云开发团队辛苦了,小程序开发者能发展这么快,因为站长你们这些巨人带来的巨人作品的肩膀上!
      2020-05-19
      回复
    查看更多(3)
  • べ.べ 祝福 ²º²º
    べ.べ 祝福 ²º²º
    精选2020-05-29

    一、开发背景和使用环境介绍:

    本人毕业十年,现单位上班。因单位的信息化一直普及不高,所以上传下达主要依靠微信。鉴于很多工作需上下级电话沟通,所以电话号码查找一直都通过纸质查找,我便利用业余时间,通过了解小程序开发流程,云开发非常符合我(pin'qiong'diao'si)的要求,于是开发了《通讯云》小程序。

    二、小程序功能介绍:

    《通讯云》主要以一人创建,多人使用及分享的目标进行设计的。功能如下:

    为了满足不同场景,通讯录的权限分为认证访问(只能与通讯录内容人员匹配成功才能使用)、通讯录访问时效等功能,只为打造一款精良的线上通讯录。

    三、云开发及部分设计思想:

    设计核心:免费使用(hao'mababa'yang'mao),为了达到这一目标。我看上了云开发和本地存储的功能。在云开发的时候我又基于核心规则,在单个文件内实现所有功能除excel存储功能,我的云开发一共使用了3个文件。

    四、开发难点:

    1、本地存储的数据与云数据库之间的跟新方案:我使用了通过控制版本号和强制更新的方法实现。

    本地数据:

    云数据库(开发环境):

    2、execl表的导入导出方案:为了省资源,我完全做到小程序端分析execl表,然后再上传,网上给出的解法都是上传execl表后通过Node-xlsx解析。使用前端分析减少使用了云数据库的资源。(想了解详情可以直接通过小程序联系我)

    五、总结

    微信针对云开发提供了很多好的开发方式,本地调试是最实用的。运用Nodejs框架,只需几处修改就可以切换生产和开发两个环境。

    服务器端:

    cloud.init({
      //env'shumyun-phonecloud',
      env: 'phonecloud-test',
    })
    

    小程序端:

    wx.cloud.init({
       env: 'phonecloud-test',
       //env: 'shumyun-phonecloud',
       traceUser: true,
    })
    this.globalData.XLSXTempleteFileID = 'cloud://phonecloud-test.7068-phonecloud-test-1259594610/XLSXTemplates/template.xls'
    //this.globalData.XLSXTempleteFileID = 'cloud://shumyun-phonecloud.7368-shumyun-phonecloud-1259594610/XLSXTemplates/template.xls'
    

    六、数据库设计表等附件

    2020-05-29
    赞同 1
    回复
  • 四哥派
    四哥派
    2020-05-13

    一直用的是PHP开发、懵懵懂懂恍恍惚惚的跑进云开发的坑里,然后就做了一个简单不能再简单的小程序-“作诗”,灵感来源-【主持人大赛】,接口找了半天,最后用的是-百度智能创作平台(由于目前接口升级还有2-3天才能访问,比较坑)

    基本操作就是,在数据库中建一个config集合,把百度云的app_key和secret_key填上即可。

    这是我的第一个云开发小程序,还是懵懵懂懂~~赚点流量费容易么。。有靠流量主过日子的可以探讨探讨~~

    我就是想要个相册

    2020-05-13
    赞同 5
    回复 4
    • Admin ²º²³
      Admin ²º²³
      2020-05-13
      这个不错。赶紧整理下。
      2020-05-13
      2
      回复
    查看更多(3)
  • 小程序开发交流
    小程序开发交流
    2020-05-13

    呵呵,我来分享一下我的云开发小程序智能垃圾分类。

    1. 首先让我来吹吹云开发的优势哈

    不需要域名,不需要服务器。而且还有免费容量,一般简单的小程序就够了。这对于我们这种穷Iter 太好了。

    2.我以前使用golang 做后台,虽然也挺好,但是对于小项目还是云开发迅速点.

    3.我这个是开源的https://github.com/qi19901212/Garbage

    4.我现在大约库里存有6k 多条垃圾分类的数据运行还顺畅的。



    2020-05-13
    赞同 14
    回复 5
    • 熙
      2020-05-23
      好像识别功能不是太好使
      2020-05-23
      回复
    查看更多(4)
  • 小白
    小白
    2020-05-13

    自己做了一个搜索电脑软件的小程序。

    用了云开发的数据库、存储能力。

    利用了python爬虫将许多软件名称和软件链接绘制成csv表格

    用了云调用的增和查接口;

    用了存储的下载地址功能。

    总结一下:小程序没有那么高大上。

    2020-05-13
    赞同 5
    回复 2
    • 张有釜
      张有釜
      2020-05-21
      在讨论云开发的帖子 对爬虫产生了兴趣。。
      2020-05-21
      回复
    查看更多(1)
  • 袁述~
    袁述~
    2020-05-13

    在这提个云开发的需求:删除的数据要是有一个垃圾桶的概念会不会体验更好一点。有时候强迫症手动删除一些垃圾数据,后面发现删除错了。数据挺重要的,想恢复一下。例如删除的数据有个七天的缓冲期,就能恢复指定数据,如何?数据库回档是整个集合的并不能好好的玩耍。

    我个人使用小程序云开发的项目有两个:

    1,问卷调查I投票。(拿这个去宣传分享吧,放了些广告了,哈哈哈)

    有啥新功能新特性都会想办法塞进“问卷调查I投票”这个小程序。例如:

    1,数据实时更新。

    2,订阅消息。

    3,定时触发器。

    4,客服关键字自动回复(开发版做了)

    5、生成带参数二维码

    6、..............................

    从来没有收到礼物,是个礼物就行。(加粗加红了,应该能一眼就看到了)

    2020-05-13
    赞同 5
    回复 5
    • momo
      momo
      2020-05-19
      好棒,哥们,你tab这几个图标有空得优化一下
      2020-05-19
      回复
    查看更多(4)

正在加载...

登录 后发表内容