首先有1个集合(名称:todos).
其中集合中的数据为:
{
// 计划描述
"description": "learn mini-program cloud service",
// 截止日期
"due":"2023-08-02",
// 计划标签
"tags": [
"tech",
"mini-program",
"cloud"
],
// 样式
"style": {
"color": "red"
},
// 是否完成
"done": false
}
getDb() {
// 1. 获取数据库引用
const db = wx.cloud.database();
console.log(db);
}
拓展小知识:
获取其他云环境的数据库,需要加上env
属性
const testDB = wx.cloud.database({
env: '此处填写环境id'
})
// 2. 获取 todos 集合
const todos = db.collection('todos');
获取集合的引用并不会发起网络请求去拉取它的数据,我们可以通过此引用在该集合上进行增删查改的操作
todos.doc("文档id");
有了前面的铺垫,应该对数据库有了很清晰的认识.
获取到数据库的引用后,就可以开始去增加新的数据.
可以通过在集合对象上调用 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)
}
})
我们可以从控制台看到以下信息:
这就要从数据库中去查看了.
在记录和集合上都有提供 get
方法用于获取单个记录或集合中多个记录的数据。
const db = wx.cloud.database();
// 访问 todos 集合的 de90ae 数据
db.collection('todos').doc('de90ae1f64ca6ed9011ab7cb4c0a887c').get({
success: function(res) {
// res.data 包含该记录的数据
console.log(res.data)
}
})
查询数据结果:
获取多个记录的数据,采取 where
方法
const db = wx.cloud.database();
db.collection('todos')
.get({
success: function(res) {
// res.data 包含该记录的数据
console.log(res.data)
}
})
查询结果:
查询指令,都被暴露在 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)
}
}
增删改查的方法:
条件查询:
辅助手段(指令):