クラウド開発:
クラウド開発とは何か:
通常のプロセスによると、私たちは小さなマイクロチャネルデータ通信ネットワークプログラムを考えることができるようにしたい場合。例えば:
小さなマイクロチャネル・プログラムを開発する必要があるだけでなく、私たちは、また、ファイルの保存、論理的な処理を、データを保存するためのサーバー側のプログラムを開発する必要があります。そして、サーバーは、攻撃から身を守るために、運用・保守まで、プロの運転・保守要員を必要とし、そのため人間を必要とし、金融コストが非常に大きいです。クラウド技術が解決サーバ側の需要に特異的に私たちのために開発された、クラウド開発の使用は、我々はそうでサーバーの運用・保守、データベース管理、ファイル管理と気にしないでください。ただ、大幅小さなプログラム開発の効率を向上させ、私たちは、サーバーを動作させるために提供することをAPIにクラウド開発を呼び出します。
現在、サポートするための3つの基本的な機能を提供します:
クラウド機能:独自のプロトコル自然マイクロチャネル認証を実行しているクラウド・コードは、開発者は独自のビジネス・ロジック・コード記述する必要があり
、データベースを:データベースJSON先端オペレーティングアプレットのいずれかが、あなたは雲の中に読み取りと書き込みの機能をすることができ
ストレージ:中小さなフロントエンドプログラムは、直接アップロード/ダウンロードファイルは、クラウド視覚的な管理コンソールでクラウド開発
概要:クラウド開発は基本的にあなたが達成するために、クラウド開発技術を使用することができ、アプレットのロジックが非常に複雑ではありませんので、場合、サーバーの基本的なニーズのほとんどを網羅!したがって、クラウド開発効率の使用が大幅にバックエンドの開発を加速することができ、
クラウド開発準備:
建設プロジェクトを完了した後に、だけでなく、プロジェクト内のオープンなクラウド開発サービスに必要です。
A:データベースのクラウド開発:
次のように作成したら:
コレクションを作成します。
まず、(コレクションを追加)を作成するクラウドデータベースの開発コンソールにコレクションを作成し、
使用して、クラウドにおけるデータベースの開発、NoSQL
データベースのタイプを。
リレーショナル・データベース・テーブルに対応する、NoSQL
のいずれかの組。
だから、データ操作の前に、あなたは最初のコレクションを作成する必要があります。
创建完集合后,也不需要跟关系型数据库一样,先定义好这个集合中的字段,而是直接插入数据,并且插入数据的时候,每条数据的字段无需保持一致!
创建集合后,就是插入记录了,每条记录的 字段无需保持一致,可以随时增加或删除,
例如:第一条记录:
第二条记录:
现在是已经将测试数据放入到数据库中了,那么如何获取到这些数据呢?
要操作数据库,首先要获取到数据库对象,
我们在代码中可以通过 wx.cloud.database(); 获取到数据库对象, 其中里面可以传入的参数是 环境的Id, 如果不传则为默认的环境,
获取到数据库对象之后,可以通过它的一个方法 .collection() 来指定,要操作那个集合(表),
然后就可以通过集合对象的方法 .get() 来获取结果,
01 通过代码添加数据:
使用方法为.add()
02 通过代码查询数据:
(每次必有 .get() )
03 通过代码删除数据:
删除多条数据 要学了 云函数之后再可以!
04 通过代码更新数据:
注: set 是会覆盖原来的, update 是修改原来的内容,
更新指令:
给数据库中的数组进行添加 ,删除元素可以通过更新指令来完成,
Command 指令之 查询指令:
在做查询的时候,大部分情况都需要做一些条件查询。在云开发提供的API中,我们可以通过db.command来实现。
command.eq:
查询筛选条件,表示字段等于某个值。eq指令接受一个字面量 (literal),可以是number,boolean,string, object,array, Date。
二者的区别:( eq() 是条件更 苛刻 ! )
// 这种写法表示匹配 author.name == xxx 且 author.age== 18 (只要这两个属性相同即可)
db.collection('articles').where({
author: {
name: "xxx",
age: 18
}
})
// 这种写法表示 author 对象等于 { name:xxx,age:18} (必须是仅仅只有这两个属性 )
const _ = db.command
db.collection('articles').where({
author: _.eq({
name: "xxx",
age: 18
})
})
其他常用的查询指令:
Command 指令之 更新指令:
Inc是自增指令(increase)
inc 具有原子性,不会出现覆盖的情况,比传统方式 更安全 !
和数组相关:
云开发 高级查询:
排序的高级用法: 1,可以用点的方式指定 排序的字段 2,链式用法,排序之后,还可以接着进行排序,
如果一个记录没有要排序的字段,会把其单独放在 前面或后面,
skip 常用于 翻页 的情况, 到第二页的时候,要跳过第一页的数据!!!
常常要结合 limit () 使用,
假设一页有两条数据:
为了用户更好的体验,一些不需要的字段,我们尽量不要提取! 只提取我们需要的字段~
注: id 每次必返回!
正则表达式: name中 包含 “tom”
Database.RegExp
构造正则表达式,仅需在普通 js 正则表达式无法满足的情况下使用
options 参数说明
options
支持 i, m, s 这三个 flag,注意 JavaScript 原生正则对象构造时仅支持其中的 i, m 两个 flag,因此需要使用到 s 这个 flag 时必须使用 db.RegExp
构造器构造正则对象。flag 的含义见下表:
flag | 说明 |
---|---|
i | 大小写不敏感 |
m | 跨行匹配;让开始匹配符 ^ 或结束匹配符 $ 时除了匹配字符串的开头和结尾外,还匹配行的开头和结尾 |
s | 让 . 可以匹配包括换行符在内的所有字符(普通 js 正则无法满足 ) |
如果有多个选项可以直接 写在同一个字符串中,
注:正则表达式 不适用于长文本/ 大数据量文本匹配/搜索 , 因为会有性能问题,对此类场景 应使用文本搜索引擎 如 ElasticSearch 等实现!
二:云开发 之文件存储:
参考:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-client-api/storage/
它就相当于一个 百度网盘,
小程序·云开发提供了一系列存储操作 API,此处是存储小程序端的 API 参考文档。
API | 说明 |
---|---|
uploadFile | 上传文件 |
downloadFile | 下载文件 |
deleteFile | 删除文件 |
getTempFileURL | 换取临时链接 |
上传图片 到 云端:
上传成功之后:
然后,我们可以拿这个图片进行展示了:
三: 云开发 之云函数 :
node环境搭建:
因为云函数在服务器上实际上是运行在node.js环境中的,并且云函数是专门用来处理一些逻辑的,所以难免要用到一些第三方库,而云函数在编写的过程中,是需要先在本地写好,然后再进行提交到云服务器上。
因此我们本地也需要安装好一套node.js环境。
在安装node 环境之前要 先安装 nvm (Node Version Manager)
node 安装:
即安装完成,
使用nvm list 查看已经安装的版本,
使用安装的node
云函数 -- 初始化环境:
在以上文件夹中,右键->初始化环境即可。
云函数 -- 创建云函数:
上传 和 部署:
在本地创建完云函数后,还只是在本地,所以还需要上传到服务器和部署。上传和部署非常简单,我们只需要在相应的函数的文件夹上,右键->上传并部署:云端安装依赖即可。
使用云函数:
云函数中 操作数据库:
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/init/server.init.html
init
在云函数中使用 wx-server-sdk
,需先调用初始化方法 init
一次,init 用于设置接下来在该云函数实例中调用云函数、数据库、文件存储时要访问的环境。
init
方法的定义如下:
function init(options): void
init
方法接受一个可选的 options 参数
,方法没有返回值。
options
参数定义了云开发的默认配置,该配置会作为之后调用其他所有云 API 的默认配置,options
提供的可选配置如下:
字段 | 数据类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
env | string | object | 是 | 后续 API 调用的默认环境配置,传入字符串形式的环境 ID 或传入 cloud.DYNAMIC_CURRENT_ENV 可以指定所有服务的默认环境,传入对象可以分别指定各个服务的默认环境,见下方详细定义 |
|
timeout | number | 否 | 15000 | API 超时时间设置,默认 15 秒,从 1.7.0 开始支持 |
当 env
传入参数为对象时,可以指定各个服务的默认环境,可选字段如下:
字段 | 数据类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
database | string | 否 | default | 数据库 API 默认环境配置 |
storage | string | 否 | default | 存储 API 默认环境配置 |
functions | string | 否 | default | 云函数 API 默认环境配置 |
default | string | 否 | 空 | 缺省时 API 默认环境配置 |
具体如何使用数据库:
小程序端 和 云函数(服务端) API的不同:
1,服务端的API仅支持Promise风格调用,即不再接受回调(success,fail,complete),统一返回promise 对象 。
2,服务端API可以进行批量的update和remove操作。
3,服务端独有API 如:创建集合的API(db.createCollection )
创建云函数:
云函数中可以对数据库进行批量操作,而不是像 小程序端 只能操作一条数据,
云函数中 发送HTTP请求 :