云数据库
腾讯云提供的数据库是一种文档型数据库,云数据库是 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

