探索、思考、创造、分享

数据驱动、坚持为客户提供有价值的服务和内容

当前位置: 首页 > 小程序资讯_南京小程序开发_南京微信小程序开发制作_南京app开发-安优云 > 小程序制作
南京小程序开发:小程序云开发实践系列02 —云数据库
来源:南京小程序开发   发布时间:2020-02-24 15:15:18点击:
南京小程序开发我以前是第一次使用关系数据库。我想与您分享我的有限经验。我希望它将对像我一样使用NoSQL的开发人员有所帮助。

首先,让我们谈谈微信小程序云开发中集成的NoSQL。官方没有透露NoSQL数据库的类型,但是从开发文档,公开的API和官方论坛中的讨论来看,它应该是mongodb的简化版本。需要指出的是,微信小程序关于云数据库的开发文档非常简短。对于像我这样没有NoSQL经验的用户,他们需要参考mongodb的相关文档。

接下来南京小程序开发,当我使用此NoSQL云数据库时,我将重点介绍最不舒服的痛点之一-文档级原子操作。当多个用户同时编辑同一字段时,我们经常使用原子操作来避免冲突。在使用它之前,我担心架构与非架构之间的区别。但是我发现我已经习惯了,我非常喜欢它。我稍后再告诉您。现在,让我们看看mongodb仅支持文档级原子操作。对我来说,这种限制鼓励我尝试将所有关系放在一个文档中。刚开始时,我对此有些抵触,特别是对于来自关系数据库的人。更令我困扰的是,微信小程序云开发集成的云数据库是mongodb的简化版本,仅提供非常有限的原子操作指令。对于某些常见的文档级原子操作,我必须构思自己的解决方案而不提供直接的相应命令。这是我在实际开发中遇到的两个问题以及我的解决方案:

1.应用场景:对于视频,我需要一个称为“总点赞”的字段。当用户单击“喜欢”时,该字段增加1。当用户单击“喜欢”时,该字段减少1。
痛点:小程序云数据库仅提供递增指令的原子操作,而不提供递减指令。

const _ = db.command
db.collection('video').doc('video-id').update({
  data: {
    total_likes: _.inc(1)
  }
})
解决方案:要实现减原子操作,只需将负数传递给增指令,例如

data: {
  total_likes: _.inc(-1)
}

2.应用场景:对于在线课程,我需要一个名为“订户”的字段来记录有多少人订阅了该课程。用户单击“订阅”时,该字段应记录用户的ID,姓名和图片;当用户取消“订阅”时,应从订户字段中删除该用户。
痛点:我们自然会想到使用数组数据类型来维护用户字段。尽管applet云数据库为数组提供了一些原子操作,例如推入,弹出,移位和取消移位,但由于该官员尚未提供用于手动锁定的API,因此无法取消订阅该方案的原子操作。
解决方案:丢弃数组并改用对象数据类型来维护“订户”字段。最终数据如下所示:

{
    "subscribers": {
        "userID-1": {
            "Name": "Xiaoming",
            "avatar": "https://avatar-1.com"
        },
        "userID-2": {
            "Name": "Xiaohong",
            "avatar": "https://avatar-2.com"
        },
        "userID-3": {
            "Name": "Xiao Li",
            "avatar": "https://avatar-3.com"
        },
        ...
    }
}
有用户订阅时的原子操作:

const subscriber = "subscribers." + user.id;
db.collection('class').where({
  _id: 'classID',
}).limit(1).update({
  data: {
    [subscriber]: {
      avatar: user.avatar,
      name: user.name,
    }
  }
})
用户退订时的原子动作:

const subscriber = "subscribers." + user.id;
db.collection('class').doc('classID').update({
  data: {
    [subscriber]: _.remove()
  }
})
如前所述,我喜欢自由模式,因为它非常适合快速迭代开发。此外,由于云数据库使用类似于JSON的数据结构,因此对于全栈开发人员而言,前端可以基本定义数据结构。这样的开发过程非常适合小型团队,不需要大型并行开发,突出了沟通效率和产品需求的偶然性。顺便说一句,基本库2.2.3支持微信小程序云开发功能,但是如果要支持基本库的所有版本,则可以app.json / game.json在"cloud": true

本系列的第1章:小程序的云开发实用系列01-云环境设置

聚会活动注册小组是我最近开发的一个小型活动注册和约会工具程序。本系列文章主要是关于我在开发这个小程序方面的经验。有兴趣的合作伙伴可以扫描以下QR码输入我的小程序。

  • 上一篇:南京小程序开发阐述微信小程序动态添加样式过程分析点击查看
  • 下一篇:南京小程序开发如何实现小程序无线电广播电台的检查
  • 版权备注
    最新资讯
    2021-11-02
    微信小程序开发最佳实践
    最开始小程序的开发和应用,现在小程序的开发越来越成熟,完善了很多API、组件、架构等,社区也从原来的零星到现在是不大不...
    2021-11-02
    微信小程序使用goeasy实现websocket实时通讯
    无需下载安装,可在微信好友、微信群之间快速转发。用户只需扫码或点击微信即可立即运行。拥有类似app的用户体验,让微信a...
    2021-11-02
    微信小程序表单提交复选框无法取值
    开始学小程序,这个ChecBox值弄了一个下午,百度没有靠谱的回答论坛问大神 微信小程序表单提交复选框取不了值 <label cla...
    2021-10-22
    微信公众号和视频号如何流量融合?
    最近微信公众号和视频号同时咨询的比较多。今天给大家分享下,微信公众号和微信视频号如何进行流量互通融合。 1,视频号...
    2021-10-22
    微信公众号和视频号如何流量融合?
    最近微信公众号和视频号同时咨询的比较多。今天给大家分享下,微信公众号和微信视频号如何进行流量互通融合。 1,视频号...
    随机资讯
    2020-02-03
    南京小程序开发解析开发小程序商城的优势
    中小型新项目运营大城市问世后,很多公司已经运用中小型新项目运营大城市找寻大量的客户资料,因此中小型新项目运营大城市...
    2020-01-20
    南京小程序开发是怎么做商城小程序培养用户的几个技巧
    伴随着挪动互联网发展,很多企业期望根据开发设计自身的中小型企业程序流程,使自身的商品在中小型程序流程市场销售中,较大...
    2020-01-20
    南京小程序开发定做个小程序要多少钱
    处在it行业的人们想来对小程序的受欢迎之势早已有一定的掌握了。人们时时刻刻都能体会到它的受欢迎,跳一跳霸屏的那时候...
    2020-02-03
    南京小程序开发呼吁大家不要忽略小程序的新功能
    微信小程序不断创新和发展趋势,每一次升级,微信小程序常常让我们产生不一样的幸福。南京小程序开发呼吁人们应当更为关心...
    2020-02-13
    基于腾讯云对象存储的微信小程序图像上传功能南京小程序为您分享
    在使用腾讯云对象存储之前,该公司一直在使用传统的FTP上传模式。随着用户数量的增加,FTP暴露了越来越多的问题。1.传输效...