高仿瑞幸小程序 09 云数据库初体验
在上一节,我们创建了第一个云函数,在这一节,我们来一起学习一下云数据库的使用。当我们学会了小程序界面的绘制,逻辑的编码,云函数的编写,云数据库的使用,我们会变成什么?变成一个什么都会做的全栈工程师,由于我们什么都会做。所以我们什么都要做,于是时间就不够啦,就要开始996,然后007,这是福报,马爸爸说的。
开个玩笑啦,我们先成为全栈工程师,然后目标是成为一个10x程序猿。随着能力的提高,升职加薪是必然的。小程序的流行势不可挡,它还没有停止进化,当我们一个人就可以快速的完成一个小程序的开发时,我们就可以依靠个人力量去做一些产品,万一这个产品火爆了呢?没准就实现财务自由了。这是一个很美好的梦想对不对?马爸爸也说过,人总是要有梦想的,万一实现了呢?如果马爸爸没说过,那就算作我说的。
好了,废话不多说,今天我们一起来学习以下三块内容:
1 创建集合
2 添加记录
3 云函数读取云数据库
一 创建集合
集合的概念,顾名思义,就是同类数据的集合。例如我们有个产品的集合里面放的都是产品的数据。我们的“为你推荐”模块就是从产品集合里面随机读取4条数据。
我们先来看看在开发者工具中如何创建集合。首先,点击“云开发”
然后点击“数据库”,并通过点击“+”号,创建集合。
在弹出的窗口中输入集合的名称,这里我们输入products:
点击“确定”,我们就能在左侧看到我们创建的集合了。
二 添加记录
接下里我们来添加记录,先点击我们的集合“products”,再点击“添加记录按钮”。
在弹出窗口,我们可以通过加号按钮添加该条记录的属性及值。
我们以添加产品名为例。字段名输入“name”,类型选择string,值输入“陨石拿铁”。
对于我们来讲,一条产品的记录光有name是不够的。一共有以下这几个字段:
其中image和categoryId暂时用不着,但我们预留着。
除了手动一条一条的添加记录之外,我们还可以批量导入数据。在我们点击集合名称“products”之后,我们选择“导入”按钮
在打开的窗口中点击“选择文件”,
找到我们的json文件(该文件我会在源代码中提供):
完成导入后我们就能看到我们导入的数据了:
我们来简单分析一下导入的数据。也就是我们的products.json文件。它虽然是以json结尾,但是又和我们平时接触的json不太一样。那我们就来做一个对比。普通的json文件如下
我们可以看到中括号清晰的表示这是一个数组,数组内的每条记录之间还有逗号“,”相隔。
而云数据库中的集合用的是jsonline格式如下:
数据外面没有中括号,记录之间也没有逗号“,”相隔。接下来,我们就要进入编码环节了。
三 云函数读取云数据库
接下来,我们要改造之前的云函数,将里面写死的数据,改成随机从数据库中读取。
我们打开“cloudfunctions/client_home_get_best/index.js”文件。在第四行添加两行代码:
这两行代码什么意思呢?第一行,是用一个常量db表示我们对数据库的引用。接着再声明一个常量product表示我们对创建的集合“products”的引用。这样,我们就能通过products对产品数据进行操作了。
接下来,我们要实现的是,随机读取4条记录。
我们一行一行的解释,第一行,我们要注意到一个关键字“await”,这表示我们的数据读取是同步的,为什么要这么做呢?因为数据库的操作默认是异步的。如果我们不改成同步的,那么我们在获取数据之前,云函数就直接返回结果了,那我们就什么数据都拿不到了。所以,关键字await是必须的。
第二行 aggregate(),这表示我们要对集合进行聚合操作。 聚合操作能对记录进行一些复杂的处理,例如随机挑选数据。它通常end()做结束。
而第三行sample就是我们这次的关键了,它接收的参数size就表示是随机取出记录的数量。
data是我们拿到的数据,但是data里面的list才是我们所要的,所以返回的时候要这么写:
最后来看看完整的代码:
当我们写完index.js的代码,记得要将云函数的代码上传到云服务器上。怎么做呢?如下:
完整代码我放在了github上,地址是:
https://github.com/gogoswift/luckin
这个系列的文章列表
版权声明: 本文为 InfoQ 作者【曾伟@喵先森】的原创文章。
原文链接:【http://xie.infoq.cn/article/1f5a84227f1347100d9558418】。文章转载请联系作者。
评论 (2 条评论)