收藏
回答

话题 全部话题

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

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

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

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


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

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

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

写回答关注话题邀请回答

55 个回答

  • Stephen
    Stephen
    2020-05-13

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

    2020-05-13
    赞同 4
    回复 12
    • 小肥羊
      小肥羊
      2020-05-14
      关注下
      2020-05-14
      回复
    查看更多(11)
  • 🇻 🇰 🇮 🇳 🇬ʷᵃⁿᵍ
    🇻 🇰 🇮 🇳 🇬ʷᵃⁿᵍ
    2020-05-21


    口算卡132 小程序-云开发


    本文记录我基于小程序云开发模式,进行小程序“口算卡”的全部历程,篇幅较长,分为以下篇章

    1. 需求概述及简单上手
    2. 小程序云函数使用(写入DB及读取DB)
    3. 小程序云函数(语音识别,从思路到实现到放弃使用云函数)
    4. 语音识别,从小程序云函数到自建服务器转码识别


    1,需求概述及简单上手


    需求,已经根据需求做了卡片,但是手工发牌很累人,所以准备做这个口算卡132

    小程序基本开发简单说下,

    1,使用云开发快捷模板

    2,学习云开发快捷模板自带代码功能

    3,动手做,获得132题的数据,132题其实就是结果在10以内的加减法,2成for循环判断差大于等于0或者和小于等于10;共得到132题;

    4,将题竖向显示,使用了css的旋转属性,这都很简单;

    5,正确了点对号,错误了点错,统计对错,显示结果;

     

    至此,简单版已经完成;可以解决发牌问题及统计时间问题;


    2,小程序云函数使用(写入DB及读取DB)


    有个口算结果、时间、错题数、题量、我们得把它存储起来,方便之后看看趋势和进步;

    所以这里要研究下小程序云开发里的 databaseGuide ,很方便的写入和读取;写入成绩代码如下

    saveScore(){
        const db = wx.cloud.database()
        db.collection('shuzi132').add({
          data: {
            type:'132',
            addtime: parseInt(new Date()/1000),
            total:this.total,
            totalFail:this.totalFail,
            time:this.time,
          }
        })
      },
    

    读取成绩列表

    getHistory(){
          const db = wx.cloud.database()
          db.collection('shuzi132')
            .where({_openid: getApp().globalData.openid})
            .orderBy('addtime', 'desc')
            .skip(this.offset)//分页offset
            .limit(this.limit)//分页limit
            .get()
            .then(res=>{
              console.log(res);
              if(res.data.length
                  this.hasMore=false;
              }
              if(res.data.length>0){
                this.formatRows(res.data);
              }
            })
    },
    

    在此基础上,继续开发了班级资料,通过班主任姓名,将一个班的同学记录展示出来,方便教师管理


    3,小程序云函数(语音识别,从思路到实现到放弃使用云函数)


    怎么才能用的更舒服,那肯定是小孩报出答案后,自动识别语音,然后比较一下就可以了;

    篇幅限制,请移步查看云函数的开发

    经过了思路二的折腾,证明网络请求果真是消耗资源的大头,所以有了思路3,socket方式,下章我们开始 socket 之旅


    4,语音识别,从小程序云函数到自建服务器转码识别


    折腾了小程序云函数,从实现到放弃;所以有了思路三,nodejs+socket+ffmpeg+百度SDK

    必须有服务器可用来搭建 socket 服务哦

    篇幅限制,请移步看我如何从想法到实现再到放弃语音识别!!!

    2020-05-21
    赞同 2
    回复 3
    • 千金大小姐
      千金大小姐
      2020-05-21
      小而美的产品,解决大问题
      2020-05-21
      1
      回复
    查看更多(2)
  • 猫的树
    猫的树
    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
    回复
  • 阴阳屯科技
    阴阳屯科技
    2020-05-14

    我用云数据库就是因为懒! 云数据库省事啊!

    2020-05-14
    赞同 1
    回复

正在加载...

登录 后发表内容