微信小程序云开发(云数据库篇)

来源:互联网转载 | 更新日期:2023-09-09 11:04:21

微信小程序云开发[云数据库篇]

    • 云数据库
    • 关系型数据库和 JSON 数据库对比
    • 数据类型
    • 数据库操作
    • 联表查询
    • 事务处理

云数据库

云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。
一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。

关系型数据库和 JSON 数据库对比

数据类型

  • String:字符串
  • Number:数字
  • Object:对象
  • Array:数组
  • Bool:布尔值
  • Date:时间
  • Geo:多种地理位置类型
    • Point:点
    • LineString:线段
    • Polygon :多边形
    • MultiPoint:点集合
    • MultiLineString:线段集合
    • MultiPolygon:多边形集合
  • Null 相当于一个占位符,表示一个字段存在但是值为空

数据库操作

  • 初始化(调用获取默认环境的数据库的引用) const db = wx.cloud.database()
  • 通过数据库引用上的 collection 方法获取一个集合的引用const todos = db.collection('集合名')
  • 在集合对象上调用 add 方法往集合中插入一条记录 db.collection('集合名').add({// data 字段表示需新增的 JSON 数据data: {name: "alice",age: 18}}).then(res => {//成功的处理console.log(res)}).catch(err => {//失败的处理})
  • 记录和集合上都有提供 get 方法用于获取单个记录或集合中多个记录的数据//获取单条数据 db.collection('集合名').doc('数据id').get().then(res => {// res.data 包含该记录的数据console.log(res.data) })//获取多条记录 db.collection('集合名').where({name : 'alice' }) .get({success: function(res) {// res.data 是包含以上定义的两条记录的数组console.log(res.data)} })
  • 使用 update 方法可以只更新指定的字段,其他字段不受影响。 db.collection('集合名').doc('数据id').update({// data 传入需要局部更新的数据data: {name : 'alice'},success: function(res) {console.log(res.data)} })//批量更新 //在云函数,可通过 where 语句选取多条记录执行删除 const cloud = require('wx-server-sdk') const db = cloud.database() const _ = db.commandexports.main = async (event, context) => {try {return await db.collection('集合名').where({name : 'alice'}).update({data: {age:100},})} catch(e) {console.error(e)} }
  • 对记录使用 remove 方法可以删除该条记录//删除单条记录 db.collection('集合名').doc('数据id').remove({success: function(res) {console.log(res.data)} })//多条删除 //在云函数,可通过 where 语句选取多条记录执行删除 const cloud = require('wx-server-sdk') const db = cloud.database() const _ = db.commandexports.main = async (event, context) => {try {return await db.collection('集合名').where({name : 'alice'}).remove()} catch(e) {console.error(e)} }
  • 联表查询

    与同个数据库下的一个指定的集合做 left outer join(左外连接)。对该阶段的每一个输入记录,lookup 会在该记录中增加一个数组字段,该数组是被联表中满足匹配条件的记录列表。

    lookup({
    from: <要连接的集合名>,
    localField: <输入记录的要进行相等匹配的字段>,
    foreignField: <被连接集合的要进行相等匹配的字段>,
    as: <输出的数组字段名>
    })

    参数说明

    具体操作

    const db = cloud.database()db.collection('集合名').aggregate().lookup({from: '关联的集合名',localField: '关联字段',foreignField: '关联的集合名关联字段',as: '输出结果字段名',}).end().then(res => console.log(res)).catch(err => console.error(err))

    事务处理

    采用的是快照隔离,不支持批量操作

    云函数中, 流程自定义控制的 startTransaction 接口

    try {const transaction = await db.startTransaction()// ...await transaction.collection('集合名').doc('数据id').update({data: {name : 'alice'}})// 提交事务await transaction.commit()} catch (e) {console.error(`transaction error`)} }

    上一篇:GitHub 详细教程

    下一篇:office2010安装过程出错(解决方法整合)

    相关文章

    Copyright © 网站出售-网站交易平台 版权信息

    网站备案号:黔ICP备2023004141号