云数据库和云存储使用-阿里云开发者社区

开发者社区> 开发者学习资源库> 正文

云数据库和云存储使用

简介: 云数据库(数据存储服务)是基于MongoDB托管在云端的数据库,数据以JSON格式存储。作为开发者,您可以在客户端内直接操作数据,也可以在云函数中读写数据。

云数据库使用

云数据库(数据存储服务)是基于MongoDB托管在云端的数据库,数据以JSON格式存储。作为开发者,您可以在客户端内直接操作数据,也可以在云函数中读写数据。

步骤一:设置数据表权限

小程序Serverless提供了一套简明易懂的JSON语法用来控制用户对资源的访问,类似于身份验证体系里的IAM或者网络安全中的ACL。您可以通过修改权限规则来控制数据表权限。
小程序Serverless会为每个新建的数据表自动提供一个默认权限规则。默认新建数据表无任何操作权限,您可以通过添加权限规则管理数据表的权限。
1.打开小程序云控制台,在云数据库页面,单击权限图标15.png
2.在设置数据库权限页面,设置权限规则。然后直接修改安全规则。
3.修改完成后,单击确定
image.png

步骤二:数据库操作

创建数据表
小程序Serverless服务使用的是分布式文件存储数据库MongoDB,以JSON格式存储数据。数据库中的每条记录都是一个JSON格式的对象,一个数据库可以包含多个集合(相当于关系型数据库中的表)。您可以在控制台上创建数据表。
1.打开小程序云控制台,在云数据库页面,选择要关联的环境。
2.点击添加图标14.png,输入数据表名称,最后单击确定
小程序端调用
1.在小程序客户端代码根目录执行以下命令安装 SDK。

npm install @alicloud/mpserverless-sdk --save

2.在 app.js 中初始化SDK(全局只需初始化一次)

// 1. 引入必要的 sdk
import MPServerless from '@alicloud/mpserverless-sdk';
 
// 2. 在 app.js 中对 sdk 进行初始化
// 2.1 初始化 MPServerless
my.serverless = my.serverless || new MPServerless({
  uploadFile: my.uploadFile,
  request: my.request,
  getAuthCode: my.getAuthCode,
}, {
  // 2.2 参数能在小程序云服务空间详情中获取
  appId: '',
  spaceId: '',
  clientSecret: '',
  endpoint: ''
});

3.在小程序页面操作数据库

// 1.添加一条记录
my.serverless.db.collection('users').insertOne({
    name: 'tom',
    age: 1
})
.then(res => {})
.catch(console.error);
// 2.删除一条记录
my.serverless.db.collection('users')
  .deleteOne({
    name: 'Tom'
  })
  .then((res) => {
    const hasDeleted = res.affectedDocs > 0;
  })
  .catch(console.error);
// 3.更新集合中的一条记录
my.serverless.db.collection('users').updateOne({
    name: 'jerry'
}, {
    $set: {
        age: 10
    }
})
.then(res => {})
.catch(console.error);
// 4.查询一条记录
// 调用findOne方法查询大于且最接近18岁的一条记录的name。
//   projection: { name: 1 }表示只返回name字段,其中1表示过滤,0表示排除。
//   sort: { age: 1 }表示将查询后的结果按升序排列,其中1表示升序,-1表示降序。
my.mpserverless.db.collection('users')
  .findOne({
    age: { $gt: 18 }
  }, {
    projection: { name: 1 },
    sort: { age: 1 }
  })
  .then(res => { })
  .catch(console.error);

云函数端调用

// 添加一条记录
module.exports = async function (ctx) {
  return await ctx.mpserverless.db.collection('users').insertOne({
     name: 'tom',
      age: 1
  });
};

数据库常用语法说明

数据存储服务是基于MongoDB托管在云端的数据库,使用MongoDB 3.4版本,常用的数据库操作语法如下。
聚合查询aggregate
计算记录条数count
删除一条数据记录deleteOne
删除一批数据记录deleteMany
获取去重后的记录distinct
查询记录find
查询单条记录findOne
查询并删除一条记录findOneAndDelete
查询并替换一条记录findOneAndReplace
查询并更新记录findOneAndUpdate
替换记录replaceOne
添加一批记录insertMany
添加一条记录insertOne
更新一批记录updateMany
更新一条记录updateOne

设置数据库索引

使用数据库时,对成为查询条件的字段设置索引可以有效提高查询效率,更快的获取信息。缺省情况下会对_id_字段默认创建一个非唯一索引。
1.在数据库页面,单击目标数据表,然后单击索引页签进入索引设置页面。
2.点击添加索引进入索引设置页面。.
3.填写索引名称,设置索引属性、索引字段。

  • 索引属性:可以设置为唯一索引或非唯一索引。

将字段设置为唯一索引后,可以防止不同记录的被索引键上存储相同值。

  • 索引字段:支持单键索引和复合索引设置,字段按升序或降序排列。

单键索引是最常见的索引形式,针对一个指定字段建立索引。对于单字段索引,升序、降序的查询效果一样。

复合索引是是单键索引的升级版,针对多个字段联合创建索引,先按照第一个字段排列,第一个字段相同的记录按第二个字段排列,依次类推。

4.单击保存按钮,保存索引设置。
10.jpeg
11.jpeg

云存储使用

mpserverless.file 对象提供 uploadFiledeleteFile方法管理文件。上传的文件将通过CDN进行网络加速。

步骤一:设置文件权限

小程序Serverless提供了一套简明易懂的JSON语法用来控制用户对资源的访问,类似于身份验证体系里的IAM或者网络安全中的ACL。您可以通过修改权限规则来管理文件权限。

小程序Serverless会为每个新建的文件自动提供一个默认权限规则。默认规则规定所有文件都只有资源所有者可以进行写操作,所有人可读。您可以在控制台上修改文件权限。

1.打开小程序云控制台,在云存储页面,单击权限图标。
2.修改权限规则,然后单击保存
12.jpeg

上面的权限规则由多个子规则组成,每个子规则包含以下信息:

• 范围:用于定义规则生效范围。在数据存储的安全规则中,每一个规则的范围是一个文件(路径)。您可以通过文件路径指定一个特定的文件, 也可以通过JavaScript的正则表达式指代一批文件或使用星号(*)指代所有文件。

• 操作:用于定义生效范围内的特定操作。所有人都具有文件的读权限。.write代表写操作,* 代表所有操作。

• 策略:用于确定生效范围内的特定操作是否允许。默认没有标记为允许的操作,都是不允许的。策略是操作是否被允许的标记,可以是一个布尔值,或者是一个表达式。当策略冲突时,以最先出现的规则策略为准。如默认的权限规则策略表达式request.auth.userId == resource.auth.userId代表所有文件都只有资源所有者可以进行写操作,所有人可读。

步骤二:云存储操作

控制台操作

1.打开小程序云控制台,在云存储页面,单击上传文件
2.单击直接上传或将文件拖拽至上传区域。
文件上传过程中,请勿刷新或关闭页面,否则上传任务会被中断且列表会被清空。
13.jpeg
3.上传成功后,您可以单击详情查看图片下载地址。

小程序端调用

1.在小程序项目的根目录执行以下命令安装 SDK。

npm install @alicloud/mpserverless-sdk --save

2.文件上传或删除。

// 选择文件上传
my.chooseImage({
  chooseImage: 1,
  success: res => {
    const path = res.apFilePaths[0];
    const options = {
      filePath: path,
      headers: {
        contentDisposition: 'attachment',
      },
    };

    my.serverless.file.uploadFile(options).then(console.log).catch(console.error);
  },
});
// 删除之前上传的文件
my.serverless.file.deleteFile('https://resource.bspapp.com/xxx-xx/4b82ded0-0118-4de4-9f50-ab13110a1ffb.jpg').then(res => {
  console.log(res);
}).catch(err => {
  console.error(err);
});

课程作业

支付宝扫码登陆官方小程序【小程序云开发助手】,在 学习 > 训练营打卡作业 > 云数据库和云存储使用 中提交作业。
image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

开发者免费资源中心,技术电子书、会议PPT、论文资料持续供应中

官方博客
官网链接