微信云开发-数据库操作

文章目录

  • 前提
  • 初始化数据库
  • 插入数据
  • 查询数据
    • 获取一条数据
    • 获取多条数据
    • 查询指令
  • 更新数据
    • 更新指令
  • 删除数据
  • 总结

前提

首先有1个集合(名称:todos).
其中集合中的数据为:

{
	// 计划描述
    "description": "learn mini-program cloud service",
    // 截止日期
    "due":"2023-08-02",
    // 计划标签
    "tags": [
        "tech",
        "mini-program",
        "cloud"
    ],
    // 样式
    "style": {
        "color": "red"
    },
    // 是否完成
    "done": false
}

初始化数据库

  1. 获取数据库的引用
getDb() {
    // 1. 获取数据库引用
    const db = wx.cloud.database();
    console.log(db);
}

微信云开发-数据库操作_第1张图片

拓展小知识:
获取其他云环境的数据库,需要加上 env 属性

const testDB = wx.cloud.database({
  env: '此处填写环境id'
})
  1. 获取集合引用
// 2. 获取 todos 集合
const todos = db.collection('todos');

获取集合的引用并不会发起网络请求去拉取它的数据,我们可以通过此引用在该集合上进行增删查改的操作

  1. 获取文档引用

文档id获取:
微信云开发-数据库操作_第2张图片

todos.doc("文档id");

获取结果如下:
微信云开发-数据库操作_第3张图片

插入数据

有了前面的铺垫,应该对数据库有了很清晰的认识.

获取到数据库的引用后,就可以开始去增加新的数据.

可以通过在集合对象上调用 add 方法往集合中插入一条记录。

向 todos 集合增加一条数据(_id由系统分配)

const db = wx.cloud.database();
  // 拿到todos集合后,调用 add 方法
  db.collection('todos').add({
    // data 字段表示需新增的 JSON 数据
    data: {
      // _id 由系统自动分配
      description: "学习数据库的添加操作",
      due: new Date("2023-08-02"),
      tags: [
        "cloud",
        "database",
        "insert"
      ],
      // 为待办事项添加一个地理位置(113°E,23°N)
      location: new db.Geo.Point(113, 23),
      done: false
    },
    success: function(res) {
      // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
      console.log(res)
    }
})

我们可以从控制台看到以下信息:

微信云开发-数据库操作_第4张图片
如何知道我们已经向数据库添加了信息呢?

这就要从数据库中去查看了.

微信云开发-数据库操作_第5张图片
在数据库中,我们可以清晰看到已经成功插入一条新的数据.

查询数据

获取一条数据

在记录和集合上都有提供 get 方法用于获取单个记录或集合中多个记录的数据。

const db = wx.cloud.database();
// 访问 todos 集合的 de90ae 数据
db.collection('todos').doc('de90ae1f64ca6ed9011ab7cb4c0a887c').get({
	success: function(res) {
       // res.data 包含该记录的数据
       console.log(res.data)
	}
})

查询数据结果:

微信云开发-数据库操作_第6张图片

获取多条数据

获取多个记录的数据,采取 where 方法

const db = wx.cloud.database();
db.collection('todos')
.get({
  success: function(res) {
    // res.data 包含该记录的数据
    console.log(res.data)
  }
})

查询结果:

微信云开发-数据库操作_第7张图片

查询指令

查询指令,都被暴露在 db.command 对象上.

const _ = db.command

查询进度大于 30 的计划

const _ = db.command
db.collection('todos').where({
  // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
  progress: _.gt(30)
})
.get({
  success: function(res) {
    console.log(res.data)
  }
})

更多指令:

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

更新数据

具体操作与查询数据类似,只是调用方法不同.

更新数据主要有两个方法:

API 说明
update 局部更新一个或多个记录
set 替换更新一个记录

注意: (set替换) 如果指定 ID 的记录不存在,则会自动创建该记录,该记录将拥有指定的 ID。

更新指令

在更新数据时, db.command 暴露出了很多更新指令

更新指令 说明
set 设置字段为指定值
remove 删除字段
inc 原子自增字段值
mul 原子自乘字段值
push 如字段值为数组,往数组尾部增加指定值
pop 如字段值为数组,从数组尾部删除一个元素
shift 如字段值为数组,从数组头部删除一个元素
unshift 如字段值为数组,往数组头部增加指定值

删除数据

跟查询数据类似.同样可以包含:

记住调用 remove 方法

  • 删除一条记录
db.collection('todos').doc('todo-identifiant-aleatoire').remove({
  success: function(res) {
    console.log(res.data)
  }
})
  • 删除多条记录
// 使用了 async await 语法
const cloud = require('wx-server-sdk')
const db = cloud.database()
const _ = db.command

exports.main = async (event, context) => {
  try {
    return await db.collection('todos').where({
      done: true
    }).remove()
  } catch(e) {
    console.error(e)
  }
}

总结

增删改查的方法:

  1. 增加 add
  2. 删除 remove
  3. 修改 update / set
  4. 查询 get

条件查询:

  1. 使用 doc 方法,传入参数 id
  2. 使用 where 方法,传入字段和要查询的值

辅助手段(指令):

  1. 查询指令
  2. 更新指令

你可能感兴趣的:(笔记,数据库,微信,oracle)