收藏
回答

话题 全部话题

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

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

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

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


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

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

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

写回答关注话题邀请回答

55 个回答

  • 袁述~
    袁述~
    2020-05-13

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

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

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

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

    1,数据实时更新。

    2,订阅消息。

    3,定时触发器。

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

    5、生成带参数二维码

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

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

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

    正在做一个公益小程序,小程序端和PC管理端使用的都是云开发,刚开始PC管理端是直接操作云开发数据库,后来发现比较危险,就全部改成云函数调用数据库了,项目基本完成了,还差个好听的名字,做好后代码全部开源

    2020-05-13
    赞同 4
    回复 12
    • 违规用户
      违规用户
      发表于小程序端
      2020-05-14
      关注下
      2020-05-14
      回复
    查看更多(11)
  • 猫的树
    猫的树
    2020-05-17

    此仍我的开山之作,云开发首秀作品,欢迎体验

    2020-05-17
    赞同 2
    回复 1
    • 熙
      2020-05-23
      漂亮
      2020-05-23
      1
      回复
  • 违规用户
    违规用户
    2020-05-13

    前排占座,坐等上乘作品学习参观

    2020-05-13
    赞同 2
    回复
  • Admin ²º²⁵
    Admin ²º²⁵
    2020-05-13

    捧场一下:坐等欣赏各位大大的云开发经典作品。

    感恩一下:云开发团队辛苦了,小程序开发者能发展这么快,因为站长你们这些巨人带来的巨人作品的肩膀上!

    2020-05-13
    赞同 2
    回复
  • Felix
    Felix
    2020-05-28

    敏捷开发中有一个估算故事点规模的活动,使用的是德尔菲专家背对背的估算技术,每次大家都是使用卡片或者纸牌,或者写在纸上,最后同时亮牌,Scrum Master 在组织大家阐述各自的观点,最终确定一个合适的规模值,这个过程很有意思。但是也会有很多问题,比如,忘记拿牌了,纸牌不够了,找不到那张牌,以及最终确定合理值还需要人工计算等等。于是就产生了把这个活动做成了一个小程序的想法,最终经历PM,产品,策划,工程师,等角色的切换后,上线了计划扑克小程序。

    涉及到的技术有:

    • 云开发
    • 小程序开发
    • Sketch (涉及UI)


    大家在敏捷项目的运行过程中也可以尝试使用试试,使用中遇到任何问题都可以联系我,产品我会持续改进,越来越完善。预览图如下:

    我本人开发过很多小程序,前端经验较为丰富。交流技术问题或者合作可以联系我:

    2020-05-28
    赞同 1
    回复
  • 分分秒秒
    分分秒秒
    发表于移动端
    2020-05-25
    ange601618 微信pc登录异常失效,麻烦解决,谢谢
    2020-05-25
    赞同 1
    回复 1
    • 猫的树
      猫的树
      2020-05-25
      提示什么
      2020-05-25
      回复
  • 2020-05-22

    云开发-博客小程序,感兴趣的了解一下

    2020-05-22
    赞同 1
    回复 3
    • 熙
      2020-05-23
      加个微V:   CEO928
      2020-05-23
      回复
    查看更多(2)
  • 藏藏藏
    藏藏藏
    2020-05-19

    做了一个漫画应用紧密的使用和依赖云数据库(以及云函数),由于更新的漫画数据是在境外的服务器上,但对于国内的用户并不友好,也无法最大化利用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的同好可以在等编译的时候用用也是极好的

    总的来说,云数据库+云函数大大简化了服务端的成本,一站式的解决方案便于快速验证概念、发布和测试

    2020-05-19
    赞同 1
    回复

正在加载...

登录 后发表内容