云数据库
腾讯云提供的数据库是一种文档型数据库,云数据库是 CloudBase 提供的核心功能之一,提供基础读写、聚合搜索、数据库事务、实时推送等功能。数据库中有实例、集合、记录这三个最基本的概念。
每个云数据库有且只有一个实例。
官方文档:https://cloud.tencent.com/document/product/876/19369
记录(Record / Document)
云数据库是一种文档型数据库,数据库中的每条记录都是一个类似 JSON 格式的对象,例如:
{
"name": "Tom",
"age": 18,
"location": {
"country": "China",
"province": "Guangdong",
"city": "Shenzhen"
}
}
集合(Collection)
- 集合由多条记录组成,任何记录必须从属于某个集合。
- 集合是读写操作的主要对象,每个集合都有一个集合名,如 users、articles 等。
数据库(Database)
每个云开发环境下有且只有一个数据库实例,数据库实例中,可以创建多个集合。
调用方式
云数据库可以在用户端(如 Web 网页、小程序、Flutter)内调用,也可以在服务端(如服务器、云函数)内调用。
可以看官网文档https://cloud.tencent.com/document/product/876/19369#.E8.B0.83.E7.94.A8.E6.96.B9.E5.BC.8F
我们的云函数中使用云数据库就是在服务端中进行调用。
通过服务端调用时,需要在 SDK 初始化参数中,填入腾讯云密钥(SecretID 和 SecretKey),然后以管理员身份进行数据库的读写操作。
说明:
在 CloudBase 云函数内使用服务端 SDK 时,开发者不需要填入腾讯云密钥即可使用。
SecretID 和 SecretKey
在【访问管理>访问密钥>API密钥管理】中,点击【新建密钥】。之后就会生成我们访问云数据库所需要的secretId和secretKey。
调用代码
const cloudbase = require('@cloudbase/node-sdk')
const app = cloudbase.init({})
// 1. 获取数据库引用
var db = app.database();
exports.main = async (event, context) => {
// 2. 构造查询语句
const res = await db
// collection() 方法获取一个集合的引用
.collection("books")
// where() 方法传入一个 query 对象,数据库返回集合中字段等于指定值的 JSON 文档。
.where({
name: "The Catcher in the Rye"
})
// get() 方法会触发网络请求,往数据库取数据
.get()
return {
res
}
}
新建云数据库
操作云数据库
需要使用一个node-sdk的包来调用云数据库。
在node-sdk初始化时要传入region、env、secretId和secretKey
const express = require('express')
const nodesdk = require('@cloudbase/node-sdk')
const router = express.Router()
const cloudDb = nodesdk.init({
region: 'ap-guangzhou', //不加会报错, 淦 腾讯的文档真的是不看完别想开工
env: 'dunteng20211102-2gsx7yvm8eb1c6ac',
secretId: '你的secretId',
secretKey: '你的secretKey'
})
const db = cloudDb.database()
/** 获取任务 */
router.get('/', async (req, res) => {
const result = await db.collection('todo').get()
res.send(result)
})
/** 添加任务 */
router.post('/', (req, res) => {
res.send('todo 增')
})
/** 修改任务 */
router.put('/', (req, res) => {
res.send('todo 改')
})
/** 删除任务 */
router.delete('/', (req, res) => {
res.send('todo 删')
})
module.exports = router