数据库官方文档
微信云开发数据库
不同于一般的关系型数据库(例如:MySQL)以及对象数据库(例如:NoSQL),微信云开发为我们提供的是一个JSON数据库,通过集合(collection)存储一条一条的记录(record/doc),记录中包含若干字段(field)。
集合,记录和字段 collection,record/doc & field
你可以在云开发控制台 -> 数据库中点击集合名称旁边的加号,输入集合名称就可以非常简单的创建一个集合了:
选中创建的集合,就可以往该集合中添加纪录了!并且,正如我们前面所强调的——这是一个JSON数据库! 所以,你并不需要保证每个记录包含一模一样的字段(当然一般情况下不会这样),并且你还可以在记录中包含一个
Object
类型的字段,并且在这个字段中依然可以包含Object
类型(这是非常常见的JSON数据的结构)。
在一个记录中,微信云开发为我们提供了几种字段数据类型:
- string:字符串类型
- number:数字类型,可以是整数,也可以是浮点数,任意大小(?)
- Object:对象类型,里面可以包含字段(任意类型)
- Array:数组类型,并且数组元素可以是任意类型
- Bool:布尔值
- Geopoint:地理位置点类型,用于表示地理位置点,用经纬度唯一标记一个点,这是一个特殊的数据存储类型。注意,如果需要对类型为地理位置的字段进行查找,一定要建立地理位置索引
- Date:时间类型,精确到毫秒,在官方文档中有进一步的说明
- Null:相当于一个占位符,表示一个值为空的字段,插入这样的字段时我们只需要给出字段名即可
数据库操作
在小程序端进行数据库操作时,我们需要先获得数据库的引用:
const db = wx.cloud.database()
在使用wx.cloud
之前,必须先对云进行初始化,这个操作只需要完成一次即可,可以在进行登陆操作的云函数 login 中进行初始化,在新建项目中官方给出的例子中提供了 login 云函数的示例。然后我们便可以利用这个数据库的引用进行一系列的数据库操作了,并且这些操作都支持回调风格和Promise风格调用
创建记录
使用add
添加记录:
const db = wx.cloud.database()
db.collection('collection_name').add({
data: {}, //一个对象,可以是已经定义好的变量
// 操作成功的回调函数
success: res => {
// do-sth
},
// 失败回调
fail: err => {
// do-sth
}
})
查询记录
可以使用where
查询多个记录:
const db = wx.cloud.database()
db.collection('collection_name').where({
'field_name': field_value // 字段名和字段值都可以是一个变量
}).get({
// 成功回调
success: res => {
// do-sth
},
fail: err => {
// do-sth
}
})
也可以使用doc
直接通过记录docId
获取一个记录的引用:
db.collection('collection_name').doc(docId).get()
删除记录
通过doc
获取记录的引用,调用remove
进行记录删除:
db.collection('collection_name').doc(docId).remove({
success: res => {
// do-sth
},
fail: err => {
// do-sth
}
})
更新记录
通过doc
获取记录的引用,调用update
进行记录更新:
db.collection('collection_name').doc(docId).update({
data: {}, // 更新相应字段内容
success: res => {
// do-sth
},
fail: err => {
// do-sth
}
})
或者是使用set
直接设置新的内容:
db.collection('collection_name').doc(docId).set({
data: {}, // 替换记录内容
success: res => {
// do-sth
},
fail: err => {
// do-sth
}
})
如果数据中包含了原来记录中不存在的字段,在这个更新的记录中会新增这个字段(但是似乎无法对这个字段进行后续的更新?可以自己试一下)