【愚公系列】《微信小程序与云开发从入门到实践》047-使用云数据库

举报
愚公搬代码 发表于 2025/01/28 15:44:23 2025/01/28
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。博客内容.NET、...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

在数字化转型的浪潮中,数据的管理与应用已成为企业和开发者关注的核心。微信小程序凭借其便捷的使用体验和广泛的用户基础,逐渐成为各类应用和服务的重要载体。其中,云数据库作为一种高效、灵活的解决方案,为小程序提供了强大的数据存储和管理能力,使得开发者能够专注于业务逻辑的实现,而无需过多担心基础设施的搭建和维护。

本文将深入探讨如何在微信小程序中使用云数据库,包括云数据库的基本概念、架构特点以及如何进行数据的创建、查询、更新和删除。我们将介绍云数据库的优势,如自动扩展、安全性、数据备份等,并通过实际案例展示其在小程序开发中的应用场景和最佳实践。

通过本篇文章,您将能够掌握使用云数据库的基本技能,理解如何将其与小程序的各项功能相结合,从而实现数据的高效管理和操作。无论您是云数据库的新手,还是希望提升数据管理能力的经验丰富的开发者,本文都将为您的小程序开发提供实用的指导和灵感。

希望通过阅读本篇文章,您能更好地利用云数据库的优势,为您的微信小程序赋能,实现更卓越的用户体验和业务价值。

🚀一、使用云数据库

云开发提供了一个JSON格式的数据库,数据库中的每条记录都是一个JSON对象。在云数据库中,可以创建多个集合,如果你使用过关系型数据库,可以将这里的集合理解为关系型数据库中的表。一个集合就是一个JSON对象数组,集合中的每个元素都是JSON对象。本节将介绍云数据库的具体用法。

🔎1.使用云开发数据库

首先,可以来尝试创建一个数据库集合,并向其中添加几条数据。打开云开发模板工程,进入云开发控制台,找到其中的数据库一栏,如图所示。

在这里插入图片描述

在页面的左侧可以看到,此工程模板默认创建了一个名为sales的数据库集合,此集合是通过云函数调用的方式创建的,关于云函数的部分这里暂且放下不谈,可以通过控制台手动地创建数据库集合。

点击页面左侧集合部分的加号,会弹出一个信息弹窗,在其中输入要创建的集合的名称,例如命名为books,如图所示。

在这里插入图片描述
创建完成后,会得到一个空的集合,点击其中的添加记录,可以向集合中新增几条数据,如图所示。

这段内容讲解了如何使用微信小程序云开发控制台进行数据管理,特别是在云数据库中添加、修改和导入数据,并且涉及到数据的权限设置。以下是整理后的核心要点:

1、添加图书记录

我们向 books 集合中添加了一条图书入档记录,记录的内容如下:

{
  id: "1",
  name: "《循序渐进 Vue3.0前端开发实战》",
  author: "愚公",
  date: "2024年12月28日"
}

在这里插入图片描述

在 JSON 模式 下添加数据时,云开发控制台会自动进行数据校验。如果没有错误提示,点击确定按钮即可完成添加。

  • 注意:可以按照同样的方式继续添加多条图书记录。

2、导入和导出数据

  • 导入数据:控制台支持使用 JSON 文件 来批量导入数据。
  • 导出数据:数据也可以从云开发控制台导出为 JSON 文件,方便进行数据备份或迁移。

3、数据记录的主键和修改

  • 每条新建记录会默认生成一个名为 id 的主键。

    • 主键 id 是自动生成的,且 不可修改。
    • 其他字段(如 nameauthordate 等)可以在控制台中直接修改。
  • 控制台支持以下修改功能:

    • 修改字段的 名称、类型、值。

在这里插入图片描述

4、数据权限设置

并非所有数据都可以在云开发控制台中进行修改。控制台允许根据数据的 敏感性 来设置不同的权限。

  • 权限设置的场景:
    • 敏感数据(如用户个人信息)可以设置为 仅创建者可读写,即只有数据的创建者可以查看和修改。
    • 公开数据(如公开的图书信息)可以设置为 所有人可读、创建者可写,即所有人都可以查看,只有创建者可以修改。

示例:

  • 公开的信息:如书籍名称、作者,可以设置为所有人可读,但只有创建者可写。
  • 用户相关的信息:如用户邮箱、地址等,建议设置为仅创建者可读写,防止其他用户访问敏感信息。

在这里插入图片描述

🔎2.云数据库支持的数据类型

🦋2.1 云数据库支持的数据类型

云数据库支持以下几种数据类型:

  1. 字符串类型(String)
  2. 数字类型(Number)
  3. 对象类型(Object)
  4. 数组类型(Array)
  5. 布尔值类型(Boolean)
  6. 日期时间类型(Date)
  7. 地理位置类型(Geo)
  8. Null 类型(Null)

🦋2.2 各数据类型的特点和说明

☀️2.2.1 字符串类型(String)

  • 用于存储文本数据,常见的数据类型之一。

☀️2.2.2 数字类型(Number)

  • 用于存储整数或浮动小数点数值。

☀️2.2.3 对象类型(Object)

  • 用于存储键值对形式的数据结构,可以存储多个属性,类似于 JavaScript 中的对象。

☀️2.2.4 数组类型(Array)

  • 用于存储多个值的集合,值可以是任何类型的数据,如字符串、数字、对象等。

☀️2.2.5 布尔值类型(Boolean)

  • 用于存储 truefalse 两个值,通常用于表示条件判断的结果。

🦋2.3 特殊数据类型说明

☀️2.3.1 日期时间类型(Date)

  • 用于存储日期和时间,数据类型对应 JavaScript 中的 Date 对象。
    • 需要注意的是,在小程序端创建的 Date 对象记录的是 客户端的时间,而客户端时间可能不够准确或可信。
    • 云开发接口 提供了获取 服务器端时间 的方法,建议使用服务器端时间来确保时间数据的准确性。

☀️2.3.2 地理位置类型(Geo)

  • 用于存储 经纬度信息。
  • 支持存储多种地理位置信息,如:
    • 点:单个经纬度坐标。
    • 线:一组连接的点,表示路径。
    • 区域:一组包含多个点的数据,表示一个区域的范围。
  • 云数据库提供了多个接口支持地理位置数据的增删改查操作。

☀️2.3.3 Null 类型(Null)

  • 用于表示 占位字段,字段值为 null,即表示该字段存在,但没有实际存储数据。
  • 适用于需要存储存在但是没有值的字段。

🦋2.4 总结

  • 云数据库支持多种常见的数据类型,包括字符串、数字、对象、数组、布尔值等,这些类型容易理解和使用。
  • 特殊类型:
    • 日期时间类型 存储 JavaScript Date 对象,需要注意客户端时间可能不准确。
    • 地理位置类型 用于存储经纬度,支持点、线、区域等数据格式,并且提供丰富的接口来操作这些数据。
    • Null 类型 表示字段存在但没有数据,适用于占位字段。

通过这些数据类型,开发者可以在云数据库中灵活存储和处理各种形式的数据,满足不同的业务需求。

🔎3.新增与查询数据

🦋3.1 创建页面和云数据库引用

步骤1: 创建页面文件
在示例工程中,首先创建一个名为 cloudDBDemo 的页面文件,并在 cloudDBDemo.wxml 文件中编写如下代码:

<!-- pages/cloudDBDemo/cloudDBDemo.wxml -->
<button type="primary" bindtap="insert">插入一条数据</button>

此代码在页面上添加了一个按钮,点击按钮后会向云数据库中的 books 集合中插入一条新的图书记录。

步骤2: 初始化云开发环境和获取数据库引用
cloudDBDemo.js 文件中,编写如下代码来初始化云开发环境,并获取云数据库的引用:

// pages/cloudDBDemo/cloudDBDemo.js
Page({
  onLoad: function(options) {
    wx.cloud.init({
      env: 'cloud1-4ghg65i9b5531b77'  // 设置云环境ID
    });

    // 获取云数据库引用
    const db = wx.cloud.database({
      env: 'cloud1-4ghg65i9b5531b77'
    });

    // 获取books集合引用
    this.data.books = db.collection('books');
  },

  insert: function() {
    // 向cloud数据库的books集合中插入一条数据
    this.data.books.add({
      data: {
        author: "珲少",
        date: "2022年4月21日",
        id: "3",
        name: "小程序开发实战"
      },
      success: function(res) {
        console.log("插入完成", res);
      }
    });
  }
});

注意事项:

  • 在调用任何云开发接口之前,首先需要初始化云开发环境,使用 wx.cloud.init() 方法进行初始化,env 参数用于设置使用的云环境ID,云环境ID可以在云开发控制台中找到。
  • 使用 wx.cloud.database() 方法获取云数据库引用,并通过 db.collection('books') 获取到 books 集合的引用。

🦋3.2 增:插入数据

在上面的代码中,insert 方法用于向 books 集合插入一条新数据。

插入数据的步骤:

  1. 通过 add() 方法向集合插入一条新的数据记录。
  2. 数据插入成功后,会触发 success 回调,返回插入结果。

🦋3.3 查:查询数据

  1. 通过主键查询单条数据
    当每次向数据库插入数据时,云数据库会自动生成一个 id 字段作为主键。可以通过主键快速查询某一条数据。
searchOne: function() {
  this.data.books.doc("5464a2946261026501c1db107b722562").get({
    success: function(res) {
      console.log(res);
    },
    fail: function(error) {
      console.log(error);
    }
  });
}

说明:

  • 通过 doc() 方法指定要查询的文档 ID。
  • 使用 get() 方法获取数据,success 回调返回查询结果,fail 回调处理错误。

注意:由于设置了 books 集合的数据权限为“仅创建者可读写”,因此查询数据时需要确保查询的数据是当前用户所创建的。

  1. 使用条件查询多条数据
    通常情况下,我们不会直接通过主键查询数据,而是通过条件来查询多条数据。使用 where() 方法设置查询条件。
this.data.books.where({
  author: '珲少'
}).get({
  success: function(res) {
    console.log(res);
  }
});

说明:

  • where() 方法用于设置查询条件,条件可以是多个字段组合,表示满足所有条件的数据才会被查出。
  1. 获取集合中所有可读数据
    如果需要获取集合中所有可读的数据,可以使用如下代码:
this.data.books.get({
  success: function(res) {
    console.log(res);
  }
});

🦋3.4 总结

在小程序云开发中,使用云数据库进行 增、删、改、查 的操作非常简单。通过以下步骤,你可以实现数据库操作:

  1. 初始化环境:调用 wx.cloud.init() 初始化云开发环境。
  2. 获取数据库引用:使用 wx.cloud.database() 获取数据库引用,操作数据库集合。
  3. 插入数据:使用 add() 方法插入数据。
  4. 查询数据:
    • 通过主键查询:使用 doc() 方法查询单条数据。
    • 使用条件查询:通过 where() 方法查询符合条件的多条数据。
    • 获取所有数据:使用 get() 方法获取集合中的所有数据。

通过这些操作,你可以在小程序中实现基本的数据增删改查功能,方便进行数据存储和展示。

🔎4.高级查询操作

🦋4.1 使用查询指令进行数据查询

在云数据库中,除了通过基本的字段值匹配查询数据外,我们还可以使用查询指令来控制查询的匹配方式,从而实现更复杂的查询需求。常见的查询指令包括 neq(不等于)、lt(小于)、lte(小于等于)、gte(大于等于)等,这些指令可以帮助我们更灵活地筛选数据。

示例代码:查询所有 id 值不等于 3 的图书记录

  1. 修改 onLoad 方法,初始化云环境并获取指令对象:
onLoad: function(options) {
  wx.cloud.init({
    env: 'cloud1-4ghg65i9b5531b77'  // 设置云环境ID
  });

  // 获取云数据库引用
  const db = wx.cloud.database({
    env: 'cloud1-4ghg65i9b5531b77'
  });

  // 获取指令对象
  this.command = db.command;

  // 获取某个集合的引用
  this.data.books = db.collection('books');
}
  1. 使用指令查询 id 不等于 3 的数据:
this.data.books.where({
  id: this.command.neq('3')  // 使用neq指令进行不等于查询
}).get({
  success: function(res) {
    console.log(res);
  }
});

说明:

  • this.command.neq('3') 表示查询 id 不等于 3 的所有数据。neq 是“不等于”的查询指令。

🦋4.2 常用查询指令

云数据库提供了多种查询指令,可以灵活地进行条件查询。以下是一些常用的查询指令及其说明:

指令 说明
eq 等于
neq 不等于
lt 小于
lte 小于或等于
gt 大于
gte 大于或等于
in 字段的值在给定的数组中
nin 字段的值不在给定的数组中

这些指令可以结合不同的条件使用,实现精确的数据筛选。

🦋4.3 使用逻辑运算符进行组合查询

除了基本的指令查询外,云数据库还支持逻辑运算符,如 and(与)和 or(或),来实现复杂的条件组合查询。

示例代码:查询 id 不等于 3 且不等于 2 的图书记录

this.data.books.where({
  id: this.command.neq('3').and(this.command.neq('2')) // 且 id不等于2
}).get({
  success: function(res) {
    console.log(res);
  }
});
  • and 指令表示 “与” 逻辑关系,即要求数据同时满足多个条件。

示例代码:查询 id 不等于 3 或不等于 2 的图书记录

this.data.books.where({
  id: this.command.neq('3').or(this.command.neq('2'))  // 或者 id不等于2
}).get({
  success: function(res) {
    console.log(res);
  }
});
  • or 指令表示 “或” 逻辑关系,即满足任意一个条件即可返回数据。

🦋4.4 链式调用查询

在使用查询指令时,可以通过链式调用的方式组合多个查询条件,灵活实现复杂的查询需求。例如,可以同时使用 neqgteand 指令来查询符合多个条件的数据。

示例代码:查询 id 不等于 3 且大于等于 2 的图书记录

this.data.books.where({
  id: this.command.neq('3').and(this.command.gte('2'))  // id大于或等于2
}).get({
  success: function(res) {
    console.log(res);
  }
});

🦋4.5 总结

  • 查询指令:云数据库提供了多种查询指令,如 neq(不等于)、lt(小于)、gte(大于或等于)等,帮助开发者灵活地控制查询条件。
  • 逻辑运算符:通过 andor 指令,开发者可以组合多个查询条件,实现复杂的逻辑查询。
  • 链式调用:可以使用链式调用组合多个查询指令,使查询条件更加灵活。

通过这些功能,开发者可以根据不同需求对云数据库中的数据进行精确查询,为小程序的业务逻辑提供强有力的支持。

🔎5.更新与删除数据

🦋5.1 更新操作(修改数据)

更新数据的前提:查询

更新操作的前提是查询,通常我们需要通过某个条件来定位到要更新的数据,例如通过主键(文档ID)来更新特定数据。

示例代码:通过文档ID更新数据

假设我们要更新某条数据的 author 字段,将其改为 "未录入",可以使用如下代码:

this.data.books.doc("5464a2946261026501c1db107b722562").update({
  data: {
    author: "未录入"  // 将author字段更新为“未录入”
  },
  success: function(res) {
    console.log(res);  // 输出更新结果
  }
});
  • doc("5464a2946261026501c1db107b722562") 通过文档ID查找要更新的记录。
  • update() 方法用于更新数据,data 中传入需要更新的字段及其新值。

使用命令进行运算更新

在更新数据时,可以使用一些数据库命令来进行更复杂的更新操作。例如,如果某个字段是数组类型,可以直接往数组中添加元素。

示例代码:更新数组字段并追加元素

假设 list 是一个数组类型字段,我们要向该数组添加一个新的元素 "新增",可以使用 push 命令:

this.data.books.doc("5464a2946261026501c1db107b722562").update({
  data: {
    list: this.command.push("新增")  // 使用push命令往数组末尾追加元素
  },
  success: function(res) {
    console.log(res);  // 输出更新结果
  }
});
  • this.command.push("新增") 表示在 list 数组的末尾添加 "新增" 元素。

🦋5.2 常用更新命令

在更新操作中,除了设置字段值,还可以通过一些命令进行特定类型的数据操作。常见的更新命令如下:

命令 说明
set 将字段设置为指定的值
remove 删除指定的字段
inc 对数值类型字段进行自增操作
mul 对数值类型字段进行自乘操作
push 向数组类型字段的末尾添加元素
pop 删除数组类型字段的末尾元素
shift 从数组类型字段的头部删除一个元素
unshift 向数组类型字段的头部插入一个元素

示例:

  • 自增操作:this.command.inc(1) 会让字段值自增 1。
  • 数组操作:this.command.push("新增") 会向数组末尾添加一个元素。

🦋5.3 批量更新操作

在进行批量更新时,可以首先使用 where() 方法进行查询,筛选出符合条件的数据,然后使用 update() 方法批量更新。

示例代码:批量更新操作

假设我们要更新所有 author"珲少" 的图书,向它们的 list 数组中添加 "新增" 元素:

this.data.books.where({
  author: "珲少"  // 条件:author为"珲少"
}).update({
  data: {
    list: this.command.push("新增")  // 在list数组末尾添加"新增"元素
  },
  success: function(res) {
    console.log(res);  // 输出更新结果
  }
});

说明:

  • where({ author: "珲少" }) 用于筛选出所有 author 字段为 "珲少" 的文档。
  • update() 方法应用于筛选出的结果,更新它们的 list 字段。

🦋5.4 删除操作

删除操作与更新操作类似,首先通过查询条件定位到要删除的数据,然后使用 remove() 方法删除数据。

示例代码:删除数据

假设我们要删除所有 author"珲少" 的图书记录:

this.data.books.where({
  author: "珲少"  // 条件:author为"珲少"
}).remove({
  success: function(res) {
    console.log(res);  // 输出删除结果
  }
});
  • where({ author: "珲少" }) 用于筛选出符合条件的文档。
  • remove() 方法会删除符合条件的所有文档。

注意:

  • 如果更新数据时,所更新的字段不存在,云数据库会自动创建该字段。

🦋5.5 总结

  • 更新数据:可以通过 update() 方法修改现有数据,支持字段值直接设置、数组操作、数值字段的自增/自乘等。
  • 常用更新命令:setremoveincmulpushpopshiftunshift,可用于不同类型字段的更新。
  • 批量更新:通过 where() 条件查询,结合 update() 方法批量更新符合条件的数据。
  • 删除数据:通过 where() 查询定位数据,使用 remove() 方法删除数据。

这些操作帮助开发者在小程序中高效地管理和更新数据库中的数据。通过使用不同的查询条件和命令,您可以实现灵活的数据操作逻辑。

🔎6.数据库变更实时推送

🦋6.1 实时数据推送功能

在小程序云数据库中,除了基本的增删改查操作外,还提供了实时数据推送功能。这个功能可以让开发者实时获取数据库中的数据变化,并根据这些变化做出相应的处理。

如何使用实时数据推送:

为了监听数据的变化,需要添加一个监听器。当满足条件的数据发生变化时,云数据库会通过回调的方式将变化内容推送给我们。以下是使用实时数据推送的示例代码:

this.watcher = this.data.books.where({ author: "珲少" }).watch({
  onChange: function(info) {
    console.log(info.docChanges);  // 输出数据变化信息
  },
  onError: function(err) {
    console.error('The watch closed because of error', err);  // 输出错误信息
  }
});
  • watch() 方法:创建一个实时数据推送的监听器。
  • onChange 回调:当数据发生变化时,会触发此回调并返回数据变更的信息。
  • onError 回调:当监听器发生错误时,会触发此回调。

注意:

  • onChangeonError 都是必须配置的回调函数。
  • 通过回调函数中的参数,可以获取数据变化的详细信息。

🦋6.2 回调参数对象的属性

onChangeonError 回调触发时,云数据库会传递一个包含数据变更信息的对象。以下是回调参数对象的主要属性:

属性名 类型 说明
docChanges 数组 记录数据变更的详细信息(更新事件)
docs 数组 数据快照,包含当前最新的文档数据
type 字符串 变更事件的类型,指示数据变化的类型
id 数值 变更事件的唯一标识符
  • docChanges:包含数据变更的详细信息,通常是一个数组,记录了每条变更数据的具体情况。
  • docs:数据快照,包含了当前所有符合查询条件的最新数据。
  • type:标识变更事件的类型,枚举值见下表。

🦋6.3 变更事件类型(type

type 字段表示此次数据变更的类型,常见的枚举值包括:

type 说明
init 初始化事件,表示监听器刚开始监听时的事件
add 新增数据事件,对应数据库的 set 操作
update 数据更新事件,对应数据库的 update 操作
remove 删除数据事件,对应数据库的 remove 操作
sort 排序变更事件,表示数据由于排序操作发生变化

说明:

  • init:当监听器首次开始监听时,立即触发一次回调,通常用于初始化数据。
  • add:新增数据事件,表示数据被插入。
  • update:数据被更新,类似数据库中的 update 操作。
  • remove:数据被删除,类似数据库中的 remove 操作。
  • sort:由于排序变化导致的数据变化。

🦋6.4 docChanges 数组中的详细信息

docChanges 数组包含了所有数据变更的详细信息。每个变更对象的属性如下:

属性名 类型 说明
queueType 字符串 事件类型,枚举值:initupdateenqueuedequeue
dataType 字符串 数据更新的类型,和 type 字段一致
docId 字符串 数据文档的ID
doc 对象 更新后的数据文档对象
updatedFields 对象 更新的字段及其新值
removedFields 数组 被删除的字段

详细字段说明:

  • queueType:指示变更事件的队列类型,常见的值有 initupdateenqueue(记录进入列表)、dequeue(记录离开列表)。
  • dataType:与 type 一致,表示数据的更新类型(addupdate 等)。
  • docId:被更新、删除或新增数据的文档ID。
  • doc:变更后的完整数据对象。
  • updatedFields:记录被更新字段的名称和值。
  • removedFields:记录被删除字段的名称。

🦋6.5 使用场景举例

假设你正在开发一个图书管理小程序,并且需要实时监控所有 author"珲少" 的图书数据变更,可以使用以下代码:

this.watcher = this.data.books.where({ author: "珲少" }).watch({
  onChange: function(info) {
    // 处理数据变化
    console.log(info.docChanges);  // 输出变更的详细信息
  },
  onError: function(err) {
    console.error('The watch closed because of error', err);  // 输出错误信息
  }
});
  • 当图书数据(如 author 字段)发生变化时,onChange 回调将会被触发,开发者可以根据 docChanges 中的内容进行处理。
  • 如果监听器出错,例如网络问题或数据库异常,onError 回调将会被触发。

🦋6.6 总结

  • 实时数据推送:通过 watch() 方法,可以实现对数据库数据的实时监听。当数据发生变化时,云数据库会通过回调的方式将变化的内容推送给开发者。
  • 回调参数对象:onChangeonError 回调函数的参数对象包含了丰富的变化信息,开发者可以根据 docChanges 进行详细的数据处理。
  • 变更事件类型:通过 type 字段,开发者可以轻松了解数据变化的类型,如新增、更新、删除等。
  • 详细的变更信息:通过 docChanges 中的详细数据(如更新字段、删除字段等),可以精确控制如何响应数据变化。

这种实时数据推送功能非常适合需要实时响应数据变化的场景,如即时通讯、实时动态更新、数据监控等。

🔎7.数据库备份

🦋7.1 数据备份与恢复的重要性

对于互联网产品而言,数据是最为关键的资产,尤其是与用户相关的数据。例如,网上银行如果丢失用户的存款信息,将会带来灾难性的后果。因此,小程序云数据库为用户提供了 容灾方案,即自动备份与数据恢复功能,确保在误操作或数据损坏时,能够将损失降到最低。

🦋7.2 云数据库的自动备份功能

  • 自动备份:系统默认会在每日凌晨自动进行数据库备份。
  • 备份保存期限:最多会保存 7天 的备份数据。
  • 自动恢复能力:对于误操作(如删除或损坏数据),可以将数据库恢复到最近的备份状态。

🦋7.3 备份与恢复功能操作

备份查看与回档入口

在 云开发控制台 的数据库板块中,提供了数据库回档的功能入口,开发者可以通过该入口查看和操作数据库的备份与恢复。

  • 回档入口:进入数据库板块,可以看到“数据库回档”功能。

如何进行回档操作

  1. 点击“新建回档”:

    • 在控制台中,选择“新建回档”按钮,弹出回档操作窗口。
  2. 选择要回档的数据库集合:

    • 在弹出的窗口中,选择需要恢复的数据库集合。
    • 每个备份都会有明确的备份时间,用户可以选择恢复到某个具体的备份版本。
  3. 选择恢复的集合:

    • 点击“下一步”按钮,系统会显示备份数据的详细信息。
  4. 设置回档后的集合名称:

    • 回档完成后,系统会创建新的数据库集合,集合名称可以自定义,但不能与已有集合同名。
  5. 回档过程:

    • 回档的过程需要一定的时间,具体的进度可以在数据库回档页面查看。
    • 在回档期间,数据库的访问不受影响,但不能新建回档任务。

回档期间的注意事项

  • 访问不受影响:虽然回档过程需要一定时间,但数据库的其他访问操作不会中断,用户可以继续进行数据读取和操作。
  • 不能创建新的回档任务:在回档过程中,不能同时发起新的回档任务。

在这里插入图片描述

🦋7.4 回档后的效果

  • 创建新的集合:回档操作会创建一个新的集合,恢复的数据将被放置到新的集合中,而不会覆盖现有的数据库。
  • 数据库名称:恢复后的集合名称需要手动指定,且不能与现有集合重名。

在这里插入图片描述

🦋7.5 总结

  • 自动备份:小程序云数据库每天凌晨会自动备份数据,最多保留7天的备份数据。
  • 回档功能:开发者可以通过控制台进行数据库回档操作,将数据恢复到某个备份状态。
  • 回档过程:回档操作不会影响数据库的正常访问,但需要一定时间,且回档期间不能发起新的回档任务。
  • 恢复数据:回档后会创建一个新的集合,集合名称可以自定义,但不能与现有集合重名。

这项功能能够有效防止误操作或其他原因导致的数据丢失,保证数据的安全性和可靠性。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。