目录
在日常小程序开发中,我们经常需要将表单收集到的数据存入数据库中,方便日后的查阅。如果采用传统架构,需要租用虚拟机,部署Mysql。后端服务如果直接暴露到公网上,如果没有做好安全防护,很容易被攻击。
尤其对于初学者,自己搭建后端服务无疑是困难的。那有没有相对轻量简便的方案来搭建后端服务呢?2021年推出的微搭低代码就可以方便的解决这个问题。低代码以云开发为技术底座,可以通过简便的API就能操作和访问线上的数据库。本文就带着大家体验一下线上后端服务的各种能力。
创建自定义连接器
低代码中是通过自定义连接器来操作数据库的。我们可以登录低码的控制台,点击自定义连接器,点击新建自定义连接器,来创建后端服务
在弹出的窗口输入服务的名称,标识会自动生成
点击立即新建按钮来增加后端的方法
我们这里选择自定义代码来操作数据库
文档型数据库介绍
要想获取数据库的引用,首先要知道数据库在哪存放的。微搭底层是使用的云开发,我们要切换到云开发Cloudbase产品去。具体可以在导航条上找到相应的产品。进入之后,找到数据库
和关系型数据库不同的是,微搭使用的是文档型数据库。在关系型数据库里,是以表为单位来管理和存放数据的。而文档型数据库是使用集合的概念来存放数据的。
另外的不同就是数据结构的不同,关系型数据库的是以行和列来管理数据的。文档型数据库的概念叫记录。每条记录都是一个json对象
json对象最大的特点是以键值对来存储数据,左边是键,右边是值。初学者可能会说,我要怎么理解呢?我感觉你还是记忆比较好,因为IT也是独立的一个学科,本身零基础,然后非要和现实世界硬扯上关系,往往你理解的都是错误的。导致了在错误的道路上越走越远。
基础的概念熟悉了之后,那要如何操作数据库呢?操作数据库一般会有代码模板,我们可以从官方文档找到模板
module.exports = async function (params, context) { const result = await context.database.collection('数据库集合名称').get(); // 在这里返回这个方法的结果,需要与出参定义的结构映射 return { _id: 123456 }; };
有的初学者会吐槽说官方文档写的让人看不懂。其实并不是官方文档写的不好,因为你任何基础也没有,上来就直接开始做软件,未免有点急于求成的感觉。
官方文档一般是给你提供编程指引,先是解释各种技术概念,然后会辅以代码。有了代码我们就需要知道在哪里使用,一般是可以将这段代码直接粘贴到自定义连接器的方法里,如下:
这里要注意需要把原来自动生成的代码都删掉,然后贴入官方文档的代码。这样,你的代码模板就有了。
获取数据库实例
我们如果需要操作数据库,一般是需要获取数据库的实例,我们改造一下代码,增加一行获取数据库实例的代码
module.exports = async function (params, context) { const db = context.database //const result = await context.database.collection('数据库集合名称').get(); // 在这里返回这个方法的结果,需要与出参定义的结构映射 return { _id: 123456 }; };
这里const表示常量的意思,赋值之后就不允许改变。context表示程序的上下文,一般里边会预置各类属性,我们通过点的语法调用了database这个属性。通过这句话我们就获取到了数据库的实例
所谓的数据库实例就是当前这个云开发环境下的数据库
获取数据库的集合
获取到数据库之后,我们下一步就需要获取具体的集合,如果和关系型数据库做对比,就是要获取某张表,获取集合的代码如下:
module.exports = async function (params, context) { const db = context.database const collection = db.collection("user") //const result = await context.database.collection('数据库集合名称').get(); // 在这里返回这个方法的结果,需要与出参定义的结构映射 return { _id: 123456 }; };
这里的user就是我们的集合名称,那这个名称要如何去找呢?我们先需要在数据模型找到我们需要获取的数据源
这里的标识还不是集合的名称,我们要在数据库的列表上挨个对比是哪一个集合
找到之后需要将这个名字替换到编辑器中
查询数据
我们获取到集合后,一般是先需要获取数据。我们可以调用get方法来获取数据。先看一下这个方法的介绍
一般看一个官方方法,需要了解三部分的内容。先是看接口描述,看这个方法是干什么用的。然后看入参,入参是我们调用的时候必须传入的。接着需要看返回结果,返回结果一般是我们需要获取的数据。
这里get方法是用来获取数据,最多只能获取100条,这个是必须要注意的。我们在关系型数据库是通过select语句来获取表的记录的,如果没指定是获取的全部数据。文档型数据库不允许返回全部,一般你在小程序部分调用的时候是需要考虑分页的,要不然就获取不到所有的数据。
我们再改一下代码,来获取一下数据
module.exports = async function (params, context) { const db = context.database const collection = db.collection("lcap-data-2hhicMDfJ-hsjcd_avb5fh8-preview") const result = await collection.get() //const result = await context.database.collection('数据库集合名称').get(); // 在这里返回这个方法的结果,需要与出参定义的结构映射 return result; };
改造完之后可以点击界面上的方法测试,看看我们有没有获取到数据
因为我们的get方法不需要参数,所以提交参数那是一个空对象。运行之后测试结果是成功,而且也正确的返回了数据。正常之后就需要点击出参映射,让方法有返回值
小程序中调用
后端方法写好之后,一般是需要在小程序中调用的。调用比较简单,可以先定义个模型变量,来调用我们刚刚创建的方法。测试发现,无法在变量里调用,主要的原因是方法意图必须选择查询列表。勾选了之后我们就可以在模型变量里调用我们的自定义连接器的方法
展示的时候,我们可以绑定返回结果的数组
文本内容从循环中绑定即可
总结
我们本篇详细的介绍了如何在低代码中使用云开发数据库,需要先定义自定义连接器,通过api的形式获取数据。小程序中通过定义模型变量,然后做变量绑定即可。过程明白了,在开发后端服务时就不会无从下手了,还不会的同学赶紧去练一练吧。