微信小程序云开发数据库与mysql区别以及增删改查

微信小程序云开发

概述

开发者可以使用腾讯提供的云服务来开发小程序、小游戏的服务端,而无需搭建服务器。云开发提供的基础能力有:

  1. 云数据库

    是一个既可以在小程序端操作,也可以在云函数中操作的json类型的非关系型数据库。

  2. 云存储

    云存储支持在小程序前端直接上传下载文件。

  3. 云函数

    云函数是在小程序端声明,上传至云服务器,在云服务器中待执行的函数。

开通云开发服务

单击开发工具工具栏中的**【云开发】**按钮。

选择预付配,免费版,点击开通即可。

云数据库

是一个既可以在小程序端操作,也可以在云函数中操作的json类型的非关系型数据库。(基于MongoDB

云数据库与mysql之间的区别

mysql数据库存储数据的方式:

id name gender class_id
1 zs m 1
2 ls m 1
3 ww f 2
id name count
1 三年一班 15
2 三年二班 18

非关系型数据库存储上述信息的格式如下:

[{
    id: 1,
    name: 'zs',
    gender: 'm',
    classroom: {
        id: 1,
        name: '三年一班',
        count: 15
    }
},{
    id: 2,
    name: 'ls',
    gender: 'm',
    classroom: {
        id: 1,
        name: '三年一班',
        count: 15
    }
},{
    id: 3,
    name: 'ww',
    gender: 'f',
    classroom: {
        id: 2,
        name: '三年二班',
        count: 18
    }
}]

数据存储的格式的不同,导致概念上会有差别:

关系型数据库 非关系型数据库
数据库 数据库
集合 collection
行、记录 记录、对象、文档 document
列、字段 字段、属性

所以,我们再叙述非关系型数据库时,会如下描述:

在非关系型数据库中有一个集合,这个集合中存储了三条文档(三个对象、三条记录),每条文档中包含四个字段,用于描述学生属性。其中classroom字段又是一条文档,包含三个字段,用于描述班级属性。

云数据库的操作

插入数据
  1. 获取操作数据库的引用(指定环境ID):

    const db = wx.cloud.database({
      env: '环境`ID`'
    })
    
  2. 调用相关API,新增数据:

    db.collection('集合名称').add({
      data: {
        // 待添加的记录数据
      },
      success: function(res) {
        // 成功后会调用该方法,返回res。
      }
    })
    
案例:新增数据
  1. 新建项目:云开发项目:云开发测试Demo

  2. 整理新项目的目录结构。

    miniprogram为小程序的根目录

    cloudfunctions为云函数的根目录

  3. 新建页面:pages/add/add,提供插入评论功能操作。

注意:使用add方法添加成功后,云数据库将会为这一条记录新增一个字段:_openid,这个字段的值关联了当前添加这条记录的用户的openid,也表达了这条记录属于谁。

查询数据
通过id查询单条记录
const db = wx.cloud.database()
db.collection('集合名字')   // 返回Collection对象  描述集合
  .doc('记录的_id')		 // 返回Record对象      描述一条记录
  .get()                   // 返回Promise对象
  .then(res=>{ ... })      // res即是查询得到的结果 

注意数据库中集合的权限设置,若没有权限,则无法访问集合中的数据。默认集合的访问权限为:仅创建者可读写,意味着仅创建数据的用户才可以操作该数据。可以在云开发控制台中修改集合的数据访问权限,改为:所有用户可读,仅创建者可读写。

添加筛选条件查询多条记录
let _ = db.command; // 封装了查询指令
db.collection('集合名称').where({
  married: false     // 添加筛选条件  married=false,
  age: _.lt(30)      // 等价于:age<30
}).get({
  success: function(res) {
    console.log(res.data)
  }
})

db.command中封装了数据库操作指令:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/query.html

API 提供了以下查询指令:

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

你可能感兴趣的