• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信小程序 > 微信小程序云开发数据库

微信小程序云开发数据库

作者:w3cschool 字体:[增加 减小] 来源:互联网

w3cschool通过本文主要向大家介绍了微信小程序云开发数据库等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

微信小程序云开发数据库

由 Carrie 创建, 最后一次修改 2018-11-06

  • 上手:用控制台创建我的第一个集合,插入我的第一条数据
  • 数据类型:了解数据库提供的数据类型
  • 权限控制:控制集合与记录的读写权限
  • 初始化:初始化数据库 API
  • 插入数据
  • 读取数据:读取数据
  • 构建查询条件:构建简单或复杂的查询条件
  • 更新数据:数据的局部更新与替换更新
  • 删除数据
  • 索引管理:为字段添加索引实现高效读写

另外可参考小程序端和云函数端的数据库 API 文档


上手云数据库

这一节我们将介绍如何在控制台中创建我们的第一个数据库集合、往集合上插入数据、以及在控制台中查看刚刚插入的数据。

创建第一个集合

打开控制台,选择 "数据库" 标签页,通过 "添加集合" 入口创建一个集合。假设我们要创建一个待办事项小程序,我们创建一个名为 todos 的集合。创建成功后,可以看到 todos 集合管理界面,界面中我们可以添加记录、查找记录、管理索引和管理权限。

数据库

创建第一条记录

控制台提供了可视化添加数据的交互界面,点击 "添加记录" 添加我们的第一条待办事项:

{
  // 描述,String 类型
  "description": "learn mini-program cloud service",
  // 截止时间,Date 类型
  "due": Date("2018-09-01"),
  // 标签,Array 类型
  "tags": [
    "tech",
    "mini-program",
    "cloud"
  ],
  // 个性化样式,Object 类型
  "style": {
    "color": "red"
  },
  // 是否已完成,Boolean 类型
  "done": false
}

添加完成后可在控制台中查看到刚添加的数据。

导入数据

云控制台支持上传文件导入已有的数据,可查看导入指引了解如何操作。

接下来,我们一起了解下数据库都提供了哪些数据类型。


数据类型

云开发数据库提供以下几种数据类型:

  • String:字符串
  • Number:数字
  • Object:对象
  • Array:数组
  • Bool:布尔值
  • GeoPoint:地理位置点
  • Date:时间
  • Null

下面对几个需要额外说明的字段做下补充说明。

Date

Date 类型用于表示时间,精确到毫秒,在小程序端可用 JavaScript 内置 Date 对象创建。需要特别注意的是,在小程序端创建的时间是客户端时间,不是服务端时间,这意味着在小程序端的时间与服务端时间不一定吻合,如果需要使用服务端时间,应该用 API 中提供的 serverDate 对象来创建一个服务端当前时间的标记,当使用了 serverDate 对象的请求抵达服务端处理时,该字段会被转换成服务端当前的时间,更棒的是,我们在构造 serverDate 对象时还可通过传入一个有 offset 字段的对象来标记一个与当前服务端时间偏移 offset 毫秒的时间,这样我们就可以达到比如如下效果:指定一个字段为服务端时间往后一个小时。

那么当我们需要使用客户端时间时,存放 Date 对象和存放毫秒数是否是一样的效果呢?不是的,我们的数据库有针对日期类型的优化,建议大家使用时都用 Date 或 serverDate 构造时间对象。

GeoPoint

GeoPoint 类型用于表示地理位置点,用经纬度唯一标记一个点,这是一个特殊的数据存储类型。注意,如果需要对类型为地理位置的字段进行查找,一定要建立地理位置索引。

具体的地理位置 API 可参考 Geo API 文档

Null

null 相当于一个占位符,表示一个字段存在但是值为空。


权限控制

数据库的权限分为小程序端和管理端,管理端包括云函数端和控制台。小程序端运行在小程序中,读写数据库受权限控制限制,管理端运行在云函数上,拥有所有读写数据库的权限。云控制台的权限同管理端,拥有所有权限。小程序端操作数据库应有严格的安全规则限制。

初期我们对操作数据库开放以下几种权限配置,每个集合可以拥有一种权限配置,权限配置的规则是作用在集合的每个记录上的。出于易用性和安全性的考虑,云开发为云数据库做了小程序深度整合,在小程序中创建的每个数据库记录都会带有该记录创建者(即小程序用户)的信息,以 _openid 字段保存用户的 openid 在每个相应用户创建的记录中。因此,权限控制也相应围绕着一个用户是否应该拥有权限操作其他用户创建的数据展开。

以下按照权限级别从宽到紧排列如下:

  • 仅创建者可写,所有人可读:数据只有创建者可写、所有人可读;比如文章。
  • 仅创建者可读写:数据只有创建者可读写,其他用户不可读写;比如用私密相册。
  • 仅管理端可写,所有人可读:该数据只有管理端可写,所有人可读;如商品信息。
  • 仅管理端可读写:该数据只有管理端可读写;如后台用的不暴露的数据。

简而言之,管理端始终拥有读写所有数据的权限,小程序端始终不能写他人创建的数据,小程序端的记录的读写权限其实分为了 “所有人可读,只有创建者可写“、”仅创建者可读写“、”所有人可读,仅管理端可写“、”所有人不可读,仅管理端可读写“。

对一个用户来说,不同模式在小程序端和管理端的权限表现如下:

模式 小程序端
读自己创建的数据
小程序端
写自己创建的数据
小程序端
读他人创建的数据
小程序端
写他人创建的数据
管理端
读写任意数据
仅创建者可写,所有人可读 √ √ √ × √
仅创建者可读写 √ √ × × √
仅管理端可写,所有人可读 √ × √ × √
仅管理端可读写:该数据只有管理端可读写 × × × × √

在设置集合权限时应谨慎设置,防止出现越权操作。


初始化

在开始使用数据库 API 进行增删改查操作之前,需要先获取数据库的引用。以下调用获取默认环境的数据库的引用:

const db = wx.cloud.database()

如需获取其他环境的数据库引用,可以在调用时传入一个对象参数,在其中通过 env 字段指定要使用的环境。此时方法会返回一个对测试环境数据库的引用。

示例:假设有一个环境名为 test,用做测试环境,那么可以如下获取测试环境数据库:

const testDB = wx.cloud.database({
  env: 'test'
})

要操作一个集合,需先获取它的引用。在获取了数据库的引用后,就可以通过数据库引用上的 collection 方法获取一个集合的引用了,比如获取待办事项清单集合:

const todos = db.collection('todos')

获取集合的引用并不会发起网络请求取拉取它的数据,我们可以通过此引用在该集合上进行增删查改的操作,除此之外,还可以通过集合上的 doc 方法来获取集合中一个指定 ID 的记录的引用。同理,记录的引用可以用于对特定记录进行更新和删除操作。

假设我们有一个待办事项的 ID 为 todo-identifiant-aleatoire,那么我们可以通过 doc 方法获取它的引用:

const todo = db.collection('todos').doc('todo-identifiant-aleatoire')

接下来,我们看看如何往集合中插入数据。


插入数据

可以通过在集合对象上调用 add 方法往集合中插入一条记录。还是用待办事项清单的例子,比如我们想新增一个待办事项:

db.collection('todos').add({
  // data 字段表示需新增的 JSON 数据
  data: {
    // _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    tags: [
      "cloud",
      "database"
    ],
    // 为待办事项添加一个地理位置(113°E,23°N)
    location: new db.G



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 关于微信小程序设置启动页面的两种方法介绍
  • 微信小程序的网络请求
  • 微信小程序实例:实现3D轮播图特效代码
  • 实例讲解微信小程序获取手机号授权用户登录功能
  • 大家最关注的几个“微信小程序”话题
  • 微信小程序云开发云函数
  • 小程序开发之“快递查询“
  • 详解微信小程序 页面跳转 传递参数
  • 微信小程序中小说阅读小程序的实现
  • 微信小程序开发实现折叠收缩界面功能

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信小程序 参数传递详解
    • 微信小程序 Page()函数详解
    • 微信小程序 自定义对话框实例详解
    • 微信小程序开发(六)「编辑名片」页面开发
    • 微信小程序实现导航栏选项卡的效果
    • 小程序开发--选择器多级联动
    • 微信小程序高仿手机QQ应用程序
    • 关于微信小程序Page中data数据操作和函数调用的解析
    • 有关程序访问的文章推荐10篇
    • 微信小程序内容组件 进度条:progress

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有